题解 | #统计复旦用户8月练题情况#

统计复旦用户8月练题情况

https://www.nowcoder.com/practice/53235096538a456b9220fce120c062b3

select
    a.device_id,
    university, //需改进
    count(question_id) question_cnt,
    sum(if(result = 'right', 1, 0)) right_question_cnt
from
    user_profile a
    left join question_practice_detail b
    on a.device_id = b.device_id
    and month (date) = 8
where
    university = '复旦大学'
group by
    a.device_id;

在MySQL8.0+版本中,默认情况下,select语句中的列必须出现在group by子句中或被包含在聚合函数中,否则会导致查询报错, 这是为了确保查询结果的确定性和一致性.

上述查询university列并未出现在group by子句中,根据SQL标准,这种查询是无效的,除非university在每个device_id下都有相同的值.若university和device_id字段是1:1或1:n关系,则这条查询可能能正确返回结果,但这仅是因为数据的特性,而不是查询语法的正确性.

改进(确保university在每个device_id下是一致的):

  1. university选项改成:'复旦大学' university 或: MAX(university) university
  2. 结尾改成:group by a.device_id, a.university
全部评论

相关推荐

10-28 10:48
已编辑
门头沟学院 Java
孩子我想要offer:发笔试后还没笔试把我挂了,然后邮箱一直让我测评没测,后面不知道干嘛又给我捞起来下轮笔试,做完测评笔试又挂了😅
点赞 评论 收藏
分享
看起来名字可以很长:笑死 我暑期实习阿里云的意向也被 qq 邮箱放在垃圾箱了
点赞 评论 收藏
分享
凌小云:问题太大了,首先把教育背景放前面。不然简历不用看就看被pass了。然后两个项目写了和没写一样,不如商城+点评的描述。那专业技能,前面来个技术名,后面一点都不见具体那些了。你说你熟练java,说说java反射实现方式,那些地方用,io都有那些。这让面试官怎么问。这份简历看下来,没一点问的希望。看着技术栈用的多,亮点也没解决什么实际问题。很差的一份简历,患上技术堆砌的毛病了
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务