数据库SQL语句中groupby与having和where的⽤法1、数据分组(GROUP BY):
SQL中数据可以按列名分组,搭配聚合函数⼗分实⽤。
例如有这样⼀个表:
统计每个班上20岁以上的学⽣⼈数:
SELECT student_class,COUNT(student_name) AS 总⼈数 FROM t_student WHERE student_age >20 GROUP BY (student_class);
groupby是什么函数我们再来看⼀个例⼦:
name  kecheng  fenshu
张三    语⽂      81
张三    数学      75
李四    语⽂      76
李四    数学      90
王五    语⽂      81
王五    数学      100
王五    英语      90
(1)⾸先是where 和 group by 搭配:
⽤⼀条SQL语句 查询课程成绩⼤于90分的学⽣姓名
通常我们会这么写:
select name from table where  fenshu > 90
⽽实际上我们还可以使⽤group by进⾏分组:
select name from table where fenshu>90 group by kecheng
当然这⾥分组好像没有什么实际作⽤,例⼦没举好,但这不是重点,
重点是,使⽤where和group分组时:顺序应该为 where过滤 -> group by分组 -> min(聚合函数,如果有的话)
因为这种搭配描述的是: ⽤where来实现满⾜过滤条件再聚合。
(2)再来看 having 和 group by 搭配:
⽤⼀条SQL 语句 查询出每门课都⼤于80 分的学⽣姓名
select name from table group by name having min(fenshu)>80
注意: 这⾥不能使⽤where,因为使⽤where顺序应该为 where过滤 -> group by分组 -> min(聚合函数)
即 select name from table where min(fenshu)>80 group by name 这显然是不对的。
⽽使⽤having,则顺序为  group by分组 -> having过滤 -> min(聚合函数)
这样就达到聚合之后实现过滤的效果。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。