MySQL 學習總結-聚合函式總結
阿新 • • 發佈:2019-02-13
常用的聚合函式
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;
結果截圖: