SQL33 找出每个学校GPA最低的同学

知识点:group by 的坑

原题链接
描述
题目:现在运营想要找到每个学校gpa最低的同学来做调研,请你取出每个学校的最低gpa。

在这里插入图片描述

错误答案:

SELECT device_id,university,MIN(gpa)
FROM user_profile
GROUP BY university 
ORDER BY university 

这样写会报错:

“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘user_profile.device_id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by”

原因是违背了 only_full_group_by 原则,如果是自己做项目,那当然可以改一下 MySQL 的配置解决这个问题,但现在是做题,不能修改人家牛客的配置,所以这道题说白了就是不让你用这种方式解答

【group by 的坑】
使用group by之后select 语句中不能出现常数、聚合函数、聚合键以外的字段,device_id 就是 … 以外的字段,所以出错了


本题正确答案:

select
  device_id,
  university,
  gpa
from
  user_profile
where
  (university, gpa) in (
    select
      university,
      min(gpa)
    from
      user_profile
    group by
      university
  )
order by
  university
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值