MYSQL中GROUPBY的⽤法
GROUP BY 的⽤法⾮常多样化,也是MYSQL查询必备的技能之⼀。
定义
GROUP BY我们可以先从字⾯上来理解,GROUP表⽰分组,BY后⾯写字段名,就表⽰根据哪个字段进⾏分组。GROUP BY 分组时,不限于⼀个字段,可以根据多个字段来分组,同时,GROUP BY还可以配合聚合函数来⽤,分组之后你可以计数(COUNT),求和(SUM),求平均数(AVG)等。
常⽤聚合函数(aggregate function)
count() 计数
sum() 求和
avg() 平均数
max() 最⼤值
min() 最⼩值
groupby是什么函数
语法
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE condition
GROUP BY column_name;
最简单的使⽤,查询某个字段直接group by分组查询,能起到去重的效果,类似于distinct
例:SELECT  nick FROM user GROUP BY nick //根据昵称分组,查出所有学⽣不同的名字
等同于SELECT  distinct('nick') FROM user  这两条sql查出来的结果⼀致
通常的使⽤,⼀般都是联合聚合函数⼀起使⽤的⽐较多,⽐如分组查询,每个班级有多少学⽣
例:SELECT  class_id,count(1) FROM user GROUP BY class_id,根据班级分组查询,每个班级有多少⼈
SELECT  class_id,avg(score) FROM user GROUP BY class_id,subject ORDER BY class_id ASC,根据班级分组查询,查询⼀次考试每个班级每科的平均分数
稍微复杂⼀点的使⽤,我们可以使⽤关联查询,或者having条件来辅助GROUP BY 做⼀些复杂条件的查询
例:Having条件的使⽤
SELECT nick,sum(score) AS total_score FROM exam WHERE `class` = '⼀年级⼀班' GROUP BY nick HAVING total_score > 160,查询⼀年级⼀班这次考试总分⼤于160的学⽣
注:WHERE条件⼀定要写在GROUP BY前⾯;HAVING条件⼀定是跟聚合函数⼀起使⽤,且HAVING条件过滤的条件⼀定是使⽤聚合函数的字段;聚合函数的字段不能加单引号,否则会把字段当成字符串处理。

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