28 聚合函式 MIN、MAX
阿新 • • 發佈:2020-06-25
MySQL 的常見的聚合函式有 AVG
、COUNT
、SUM
、MIN
、MAX
,上一小節介紹了 AVG
、COUNT
、SUM
三種聚合函式,本小節介紹如何使用 MIN
、MAX
兩種聚合函式,另外再介紹一下如何在 GROUP BY
中使用聚合函式。
1.MIN函式取最小值
以 teacher
表為例,先查所有 teacher
資訊:
SELECT * FROM teacher;
查詢結果如下圖:
可以使用 MIN()
函式對結果集取年齡最小值的資料:
SELECT MIN(age) FROM teacher;
執行結果如下圖:
Tips:如上圖所示,
MIN(age)
表示對結果集age
列取最小值29
。
2.MAX函式取最大值
以 student
表為例,先檢視所有 student
資訊:
SELECT * FROM student;
查詢結果如下圖:
可以使用 MAX()
函式對結果集取年齡最大值的資料:
SELECT MAX(age) FROM student;
執行結果如下圖:
Tips:如上圖所示,
MAX(age)
表示對結果集age
列取最大值23
。
3.GROUP BY HAVING
以 student_course
、course
、student
表內連線查詢為例:
SELECT *
FROM
student_course a
INNER JOIN
student b
ON a.student_id=b.id
INNER JOIN course c
ON a.course_id=c.id;
查詢結果如下圖:
使用AVG函式取分組資料平均年齡:
SELECT a.course_id,c.course_name,AVG(age)
FROM
student_course a
INNER JOIN
student b
ON a.student_id=b.id
INNER JOIN course c
ON a.course_id=c.id
GROUP BY a.course_id,c.course_name;
執行結果如下圖 :
可以使用 HAVING
20
的課程資料:
SELECT a.course_id,c.course_name,AVG(age)
FROM
student_course a
INNER JOIN
student b
ON a.student_id=b.id
INNER JOIN course c
ON a.course_id=c.id
GROUP BY a.course_id,c.course_name
HAVING AVG(age) >= 20;
執行結果如下圖:
Tips:如上圖所示,演示的是使用
AVG()
函式對分組資料進行篩選,同理,可以分別使用COUNT()
、MIN()
、MAX()
、SUM()
這四種聚合函式取出分組的資料,並且都可以使用HAVING
後面的條件對分組聚合函式的值進行篩選。
4. 小結
本小節介紹瞭如何使用 MIN
、MAX
兩種聚合函式對查詢結果集進行篩選,還介紹瞭如何在 GROUP BY
中分組使用聚合函式,並且使用 HAVING
後面的條件對分組資料進行篩選,需要注意的是聚合函式產生的資料列最好重新命名,這是因為後端程式語言在處理這些資料時需要規範的欄位名,例如:
SELECT AVG(age) AS teacher_avg_age FROM teacher;
查詢結果如下圖: