常用的聚合函数
group by 字段 :
按字段将记录分组,通常和其它的函数联合使用,group by 操作后,返回每一组的第一条记录order by:根据指定字段进行排序,默认升序(asc)排序,可以指定多个排序字段,按照字段先后分别排序。
ps:汉字拼音排序 GBK编码可以直接按拼音排序,UTF-8需要转GBK再排
--例子: 查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。
SELECT * FROM student ORDER BY convert(系名 using gbk) ASC,年龄 DESC
- sum(expr):求和
-- 一个可以记住的例子
-- 查询存在两门(包含两门)以上课程不及格的学生的平均分
-- sum实现
SELECT name,平均分 from
( SELECT name,avg(score) 平均分, sum(score<60) 挂科数目 FROM stu GROUP BY name HAVING 挂科数目>=2) tt;
avg(expr):求平均数
count(expr):计数器,返回SELECT语句检索到的行中非NULL值的数目
count(NULL) 结果为0,count(*)可以避免检索到NULL值得情况
-- 另一个可以记住的例子,题目跟sum例子相同
-- 查询存在两门(包含两门)以上课程不及格的学生的平均分
-- count实现
SELECT name,avg(score) 平均分 FROM stu WHERE
(
SELECT COUNT(score) FROM stu stu2
WHERE stu.name=stu2.name and stu2.score<60
)>=2
GROUP BY stu.name
max(expr) 获取最大值
min(expr) 获取最小值
GROUP_CONCAT(expr):按照分组,将expr字符串按逗号分隔,组合起来
SELECT name, GROUP_CONCAT(score)FROM stu GROUP BY name;
结果截图: