关于一道 SQL题目
答案:2 悬赏:20 手机版
解决时间 2021-11-27 08:50
- 提问者网友:兔牙战士
- 2021-11-26 10:47
关于一道 SQL题目
最佳答案
- 五星知识达人网友:孤独的牧羊人
- 2021-11-26 11:56
你这些问题,其实就是一个知识点,没有正确理解GROUP BY的功能
一、GROUP BY 表示分组,但是不是随便哪些字段分组都可以,SELECt后面的所有字段,除了SUM、COUNT、AVG等汇总统计字段之外,其它的都必须放在GROUP BY里面进行分组,所以,下面这样的语句是错误的:
select name, course, score from student group by name having sum(score) >75
系统会提示你course, score 两个字段都应该放在GROUP BY 后面进行分组
真正理解了GROUP BY的功能与限制之后,你上面的全部问题都会明白
二、GROUP BY应该在WHERe的后面、在ORDER BY的前面
另外,IN确实效率不好,但是格式最容易理解,所以还是会经常看见
补充:
select * from student where name like '张%' group by name having avg(score) > 75
肯定是错误的,上面说得非常清楚,你的*代表的那些所有字段,都应该出现在GROUP BY 里面
一、GROUP BY 表示分组,但是不是随便哪些字段分组都可以,SELECt后面的所有字段,除了SUM、COUNT、AVG等汇总统计字段之外,其它的都必须放在GROUP BY里面进行分组,所以,下面这样的语句是错误的:
select name, course, score from student group by name having sum(score) >75
系统会提示你course, score 两个字段都应该放在GROUP BY 后面进行分组
真正理解了GROUP BY的功能与限制之后,你上面的全部问题都会明白
二、GROUP BY应该在WHERe的后面、在ORDER BY的前面
另外,IN确实效率不好,但是格式最容易理解,所以还是会经常看见
补充:
select * from student where name like '张%' group by name having avg(score) > 75
肯定是错误的,上面说得非常清楚,你的*代表的那些所有字段,都应该出现在GROUP BY 里面
全部回答
- 1楼网友:duile
- 2021-11-26 13:35
题目要求的东西确实可以用N多方法得出同样的结果
其实标准答案也是出题人的喜好,不用计较
而且这种只有几条数据的表,无论用什么影响的效率都不会太大
GROUP BY 关键字一定要放到 WHERe 的后边吗?回答:yes
你给的另一个人的答案,好像错了吧?sum(score)代表的是总分,可题目要求的是平均分吧?而且group by的用法不对,聚函数没用上,并且最后group by的东西确实少了
-----------补充的不正确----------
你前边如果select *的话,你有多少列你最后就要group by多少列
其实标准答案也是出题人的喜好,不用计较
而且这种只有几条数据的表,无论用什么影响的效率都不会太大
GROUP BY 关键字一定要放到 WHERe 的后边吗?回答:yes
你给的另一个人的答案,好像错了吧?sum(score)代表的是总分,可题目要求的是平均分吧?而且group by的用法不对,聚函数没用上,并且最后group by的东西确实少了
-----------补充的不正确----------
你前边如果select *的话,你有多少列你最后就要group by多少列
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯