SQL每日刷題—分組查詢
阿新 • • 發佈:2021-01-09
SQL—分組
題目
有一個courses 表 ,有: student (學生) 和 class (課程)。
請列出所有超過或等於5名學生的課。
例如,表:
+---------+------------+ | student | class | +---------+------------+ | A | Math | | B | English | | C | Math | | D | Biology | | E | Math | | F | Computer | | G | Math | | H | Math | | I | Math | +---------+------------+
應該輸出:
+---------+
| class |
+---------+
| Math |
+---------+
說明:學生在每個課中不應被重複計算
預備知識
①
GROUP BY語句通常與集合函式(COUNT,MAX,MIN,SUM,AVG)一起使用,以按一個或多個列對結果集進行分組。
select COUNT(欄位) as 個數,欄位a from 表名 group by 欄位a
②
-
HAVING 子句對 GROUP BY 子句設定條件的方式
與 WHERE 和 SELECT 的互動方式類似。 -
WHERE 搜尋條件在進行分組操作之前應用;
而 HAVING 搜尋條件在進行分組操作之後應用。 -
HAVING 語法與 WHERE 語法類似,但 HAVING 可以包含聚合函式。
HAVING 子句可以引用選擇列表中顯示的任意項。
思路
1. 先按照class分組
2. 組內計算非重複學生個數
程式碼
select class
from courses
group by class
having count(DISTINCT student)>=5
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/classes-more-than-5-students