SQL 分群語法 列出至少有五位學生的課程 Leetcode #596

更新於 發佈於 閱讀時間約 3 分鐘

題目敘述

題目會給我們一張Courses資料表,裡面分別有student、class等欄位。其中(student, class) 是這張資料表的複合主鍵Primary key pair。


要求我們,以課程做分群列出至少有五位同學的課程。

輸出的順序不拘

Table: Courses

+-------------+---------+
| Column Name | Type |
+-------------+---------+
| student | varchar |
| class | varchar |
+-------------+---------+
(student, class) is the primary key (combination of columns with unique values) for this table.
Each row of this table indicates the name of a student and the class in which they are enrolled.

詳細的題目可在這裡看到


約束條件

以課程做分群列出至少有五位同學的課程。


演算法1-分群

這題主要的考點落在分群,可以使用經典的SQL 分群語法去解開

SELECT ...欄位 FROM ...表格 WHERE ...條件

GROUP BY ...分群的依據欄位

HAVING ...過濾的條件


這題已經要求針對課程去做分群

所以使用 GROUP by class

同時,要求列出的課程必須有至少五位學生

所以使用HAVING COUNT(student) >= 5


程式碼1-分群

 class SoSELECT class
FROM Courses
GROUP by class
# Select those classes which have at least 5 students for each single class.
HAVING COUNT(student) >= 5;

演算法2-子查詢

也可以用前面學過的SQL subquery子查詢語法,相當於先建出一張臨時表,包含課程和和每堂課程對應的學生總數。接著,再列出至少有五位學生的課程,即為所求。

SELECT ...欄位

FROM (課程和和每堂課程對應的學生總數的臨時表)

WHERE ...欄位 ... 做條件判斷(至少有五位學生的課程)

Subquery教學


程式碼2-子查詢

SELECT class
FROM(
SELECT class, COUNT(student) as class_std_num
FROM Courses
GROUP BY class
) AS class_st_table
WHERE class_std_num >= 5;

關鍵知識點:

看到分群 想到GROUP BY ... HAVING ...條件的語法。

可以同步複習 SQL分群語法 列出活躍使用者 Leetcode #1141這一題,鞏固分群GROUP BY的語法和知識點


另外,條條大路通羅馬,一題多解,也可以用前面學過的子查詢語法,先建立臨時表,再從臨時表裡面撈資料。

(當覺得一步到位很難的時候,可以先拆成臨時表,再從臨時表裡面去查詢撈資料)

可以同步複習 SQL子查詢語法 產品銷售分析III Leetcode #1070 這一題,鞏固子查詢的語法和知識點


Reference:

[1] MySQL with GROUP BY ... HAVING ... condition syntax [w/ comment] - Classes More Than 5 Students - LeetCode

留言
avatar-img
留言分享你的想法!
avatar-img
小松鼠的演算法樂園
95會員
427內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
2024/01/01
題目敘述 題目會給我們兩張資料表,第一張是Sales,第二張是Product。 第一張是Sales表格,裡面分別有sale_id、 product_id、year、quantity、price等欄位。其中(sale_id、 product_id)做為複合主鍵Primary key Table:
Thumbnail
2024/01/01
題目敘述 題目會給我們兩張資料表,第一張是Sales,第二張是Product。 第一張是Sales表格,裡面分別有sale_id、 product_id、year、quantity、price等欄位。其中(sale_id、 product_id)做為複合主鍵Primary key Table:
Thumbnail
2023/12/29
題目敘述 題目會給我們兩張資料表。 第一張資料表是Employees 裡面分別有id、name等欄位。這張資料表的id是主鍵。 第二張資料表是EmployeeUNI 裡面分別有id、unique_id等欄位。 題目要求我們列出每位員工對應到的Unique ID
Thumbnail
2023/12/29
題目敘述 題目會給我們兩張資料表。 第一張資料表是Employees 裡面分別有id、name等欄位。這張資料表的id是主鍵。 第二張資料表是EmployeeUNI 裡面分別有id、unique_id等欄位。 題目要求我們列出每位員工對應到的Unique ID
Thumbnail
2023/12/26
題目敘述 題目會給我們一張Tweets資料表。裡面分別有tweet_id、content等欄位。這張資料表的tweet_id是主鍵Primary key。 題目要求我們列出所有非法的推文。輸出順序不拘。 非法推文的定義,推文內容的長度超過15個字元。
Thumbnail
2023/12/26
題目敘述 題目會給我們一張Tweets資料表。裡面分別有tweet_id、content等欄位。這張資料表的tweet_id是主鍵Primary key。 題目要求我們列出所有非法的推文。輸出順序不拘。 非法推文的定義,推文內容的長度超過15個字元。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
題目敘述 題目會給我們一張Views資料表。裡面分別有article_id、author_id、viewer_id、view_date等欄位。題目說這張資料表沒有主鍵Primary key,而且可能有重複欄位。 題目要求我們列出所有讀過自己寫的文章的作者ID 輸出答案時,請以作者ID做升序排列
Thumbnail
題目敘述 題目會給我們一張Views資料表。裡面分別有article_id、author_id、viewer_id、view_date等欄位。題目說這張資料表沒有主鍵Primary key,而且可能有重複欄位。 題目要求我們列出所有讀過自己寫的文章的作者ID 輸出答案時,請以作者ID做升序排列
Thumbnail
題目敘述 題目會給我們一個輸入陣列prerequisites,每個pair代表兩個課程之間的先修關係,和課程總數numCourses。 題目問我們這組課程表是否能依照順序修完所有的課程? 如果可以,返回True。 如果不行,代表有擋修形成死結,無法依照順序修完所有的課程,返回False。
Thumbnail
題目敘述 題目會給我們一個輸入陣列prerequisites,每個pair代表兩個課程之間的先修關係,和課程總數numCourses。 題目問我們這組課程表是否能依照順序修完所有的課程? 如果可以,返回True。 如果不行,代表有擋修形成死結,無法依照順序修完所有的課程,返回False。
Thumbnail
題目敘述 題目會給我們一張Employee 資料表。裡面分別有employee_id、department_id 、primary_flag 等欄位。其中(employee_id, department_id) 是這張資料表的複合主鍵Primary key。 要求我們列出每一位員工的主要歸屬
Thumbnail
題目敘述 題目會給我們一張Employee 資料表。裡面分別有employee_id、department_id 、primary_flag 等欄位。其中(employee_id, department_id) 是這張資料表的複合主鍵Primary key。 要求我們列出每一位員工的主要歸屬
Thumbnail
題目敘述 題目會給我們一張Employees 資料表。裡面分別有employee_id、name、reports_to 、age 等欄位。其中employee_id 是這張資料表的主鍵Primary key。 要求我們列出每一位經理人下轄部屬的數量和部屬的平均年齡(四捨五入到最接近的整數)。
Thumbnail
題目敘述 題目會給我們一張Employees 資料表。裡面分別有employee_id、name、reports_to 、age 等欄位。其中employee_id 是這張資料表的主鍵Primary key。 要求我們列出每一位經理人下轄部屬的數量和部屬的平均年齡(四捨五入到最接近的整數)。
Thumbnail
題目會給我們兩張資料表。 第一張是Customer資料表,裡面分別有customer_id 、product_key 等欄位。其中product_key 是這張資料表的外鍵foreign key,關連到第二張Product資料表。 題目還特別提醒,這張資料表可能包含重複的data row
Thumbnail
題目會給我們兩張資料表。 第一張是Customer資料表,裡面分別有customer_id 、product_key 等欄位。其中product_key 是這張資料表的外鍵foreign key,關連到第二張Product資料表。 題目還特別提醒,這張資料表可能包含重複的data row
Thumbnail
題目敘述 題目會給我們一張Courses資料表,裡面分別有student、class等欄位。其中(student, class) 是這張資料表的複合主鍵Primary key pair。 要求我們,以課程做分群,列出至少有五位同學的課程。 輸出的順序不拘。 Table: Courses
Thumbnail
題目敘述 題目會給我們一張Courses資料表,裡面分別有student、class等欄位。其中(student, class) 是這張資料表的複合主鍵Primary key pair。 要求我們,以課程做分群,列出至少有五位同學的課程。 輸出的順序不拘。 Table: Courses
Thumbnail
題目敘述 題目會給我們一張Activity資料表,裡面分別有user_id、 session_id、activity_date 、activity_type等欄位。 要求我們列出所有過去30天的活躍使用者。 活躍使用者的定義為2019-07-27包含這天,往前三十天的區間內,至少有過一次活動紀錄
Thumbnail
題目敘述 題目會給我們一張Activity資料表,裡面分別有user_id、 session_id、activity_date 、activity_type等欄位。 要求我們列出所有過去30天的活躍使用者。 活躍使用者的定義為2019-07-27包含這天,往前三十天的區間內,至少有過一次活動紀錄
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News