SQL 合併查詢語法 列出部屬的數量和平均年齡 Leetcode #1731

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

題目敘述

題目會給我們一張Employees 資料表。裡面分別有employee_id、name、reports_to 、age 等欄位。其中employee_id 是這張資料表的主鍵Primary key。


要求我們列出每一位經理人下轄部屬的數量部屬的平均年齡(四捨五入到最接近的整數)。

輸出答案時以 employee_id 員工ID升序排列


Table: Employees

+-------------+----------+
| Column Name | Type |
+-------------+----------+
| employee_id | int |
| name | varchar |
| reports_to | int |
| age | int |
+-------------+----------+
employee_id is the column with unique values for this table.
This table contains information about the employees and the id of the manager they report to. Some employees do not report to anyone (reports_to is null).

詳細的題目可在這裡看到


約束條件

要求我們列出每一位經理人下轄部屬的數量部屬的平均年齡(四捨五入到最接近的整數)。

輸出答案時以 employee_id 員工ID升序排列


演算法- 合併查詢 JOIN

當需要使用到兩張資料表,或者一張資料表使用兩次時,想到 JOIN 合併查詢


本題的情況是一張資料表使用兩次,並且用經理的ID 和 員工向上報告對象的ID去做JOIN 合併查詢,建立出經理對部屬的關係。


這題主要的考點落在合併查詢JOIN,可以使用經典的SQL 合併查詢語法去解開

SELECT ...欄位

FROM ...表格1

JOIN ...表格2 (可能是另一張表格,也可以是同一張表格)

ON ...合併對齊的欄位

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

ORDER BY ...輸出排序的依據


主角是 經理人 和 下轄的部屬,經理人 和 部屬 都是員工表Employees裡面的成員,這題使用INNER JOIN 同一張表使用兩次,做合併查詢。

經理人 對 部屬的關係可以用 經理的員工ID員工的向上回報的ID 串聯起來。

image.png

image.png


SELECT mgr.employee_id, mgr.name, COUNT(emp.employee_id) AS "reports_count", ROUND(AVG(emp.age), 0) as "average_age"
FROM Employees mgr
# Connect two tables on "report_to" field.
INNER JOIN Employees emp
ON mgr.employee_id = emp.reports_to

接著 在對經理人做分群 和 升序排列即可。

GROUP BY mgr.employee_id
# Sort by ID in ascending order
ORDER BY mgr.employee_id ASC;

程式碼 合併查詢 JOIN

# Round employees' age to nearest integer
SELECT mgr.employee_id, mgr.name, COUNT(emp.employee_id) AS "reports_count", ROUND(AVG(emp.age), 0) as "average_age"
FROM Employees mgr
# Connect two tables on "report_to" field.
INNER JOIN Employees emp
ON mgr.employee_id = emp.reports_to
GROUP BY mgr.employee_id
# Sort by ID in ascending order
ORDER BY mgr.employee_id ASC;

關鍵知識點

當需要使用到兩張資料表,或者一張資料表使用兩次時,想到 JOIN 合併查詢

本題的情況是一張資料表使用兩次,並且用經理的ID和員工向上報告對象的ID去做JOIN 合併查詢,建立出經理對部屬的關係。


Reference:

[1] MySQL by INNER JOIN + GROUP BY [w/ SQL Diagram] - The Number of Employees Which Report to Each Employee - 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
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
故事就是這麼開始的... 「整個事業部被裁撤是總公司的決定,我們也只是配合…只是這事業部副總實在不好處理…」總經理進入開講模式。 「想當年喔,這個副總跟我同期進公司,在總公司也是經營了不少人脈,只不過後來我的能力經驗各方面勝出一籌…(以下省略自吹自擂三萬八千個字)」 莉莉安膽戰心驚
Thumbnail
故事就是這麼開始的... 「整個事業部被裁撤是總公司的決定,我們也只是配合…只是這事業部副總實在不好處理…」總經理進入開講模式。 「想當年喔,這個副總跟我同期進公司,在總公司也是經營了不少人脈,只不過後來我的能力經驗各方面勝出一籌…(以下省略自吹自擂三萬八千個字)」 莉莉安膽戰心驚
Thumbnail
年輕的工程師是公司裡最有活力的一群人。 我們部門幾乎都是20幾歲的年輕人,我一直認為他們有很大的熱情和動力。   其實主管和我們加一加只有6、7個人左右,而每位工程師都很尊重我,我才進來公司二個月他們就稱我為姐,原因是第一、我年紀比較年長,第二、他們認為我的經驗比他們多。   其實我也需要
Thumbnail
年輕的工程師是公司裡最有活力的一群人。 我們部門幾乎都是20幾歲的年輕人,我一直認為他們有很大的熱情和動力。   其實主管和我們加一加只有6、7個人左右,而每位工程師都很尊重我,我才進來公司二個月他們就稱我為姐,原因是第一、我年紀比較年長,第二、他們認為我的經驗比他們多。   其實我也需要
Thumbnail
這是一篇引導文,談談一個契機,剛出社會前幾年面試了許多工作,相比起我的表姐,出社馬上得到體面的工作,我前後碰撞了好幾次的面試,各種奇耙的主管,體驗了各種不類型的主管,當時的家人開玩笑說:你可以出一本書叫做我與我的一百位主管,原本聽了還蠻不服氣的,但十年過後的現在,我已經是職場老鳥,想起當初這個點子,
Thumbnail
這是一篇引導文,談談一個契機,剛出社會前幾年面試了許多工作,相比起我的表姐,出社馬上得到體面的工作,我前後碰撞了好幾次的面試,各種奇耙的主管,體驗了各種不類型的主管,當時的家人開玩笑說:你可以出一本書叫做我與我的一百位主管,原本聽了還蠻不服氣的,但十年過後的現在,我已經是職場老鳥,想起當初這個點子,
Thumbnail
I 人採訪遇上兩位 E 人經理,保費部的怡伶和人資部的譯德,真是大大滿足ヽ(*´∀`)ノ゚關於企劃工作他們侃侃而談,十足展現企劃人各種想法的特質,兩位年輕的主管在待人處事上也相當有默契,竟有許多相似之處,好想……馬上加入(?)
Thumbnail
I 人採訪遇上兩位 E 人經理,保費部的怡伶和人資部的譯德,真是大大滿足ヽ(*´∀`)ノ゚關於企劃工作他們侃侃而談,十足展現企劃人各種想法的特質,兩位年輕的主管在待人處事上也相當有默契,竟有許多相似之處,好想……馬上加入(?)
Thumbnail
  發現話題竟然還活著,我趕忙補刀:「嗯嗯,不用也沒關係。」
Thumbnail
  發現話題竟然還活著,我趕忙補刀:「嗯嗯,不用也沒關係。」
Thumbnail
除了我的故友在大陸遇害以外,台商在世界各地奔走,不幸命喪異鄉的人也所在多有。像知名作家黃越綏女士,他的先生也在菲律賓不幸經商遇害。
Thumbnail
除了我的故友在大陸遇害以外,台商在世界各地奔走,不幸命喪異鄉的人也所在多有。像知名作家黃越綏女士,他的先生也在菲律賓不幸經商遇害。
Thumbnail
我在園區上班時先是經由客戶電話中幫一位主管完成一件託付 後來跟這位主管會有電話聯絡,電話中他會聊到太太跟女兒 他所屬的公司正是我公司的重要客戶,當時我們雙方營業額都在快速成長 也正走向國際化的轉型他跟我常常要不停學習新系統讓工作營運能避免人為的操作錯誤 導致損失,他做人資主管面對公司要跨入國
Thumbnail
我在園區上班時先是經由客戶電話中幫一位主管完成一件託付 後來跟這位主管會有電話聯絡,電話中他會聊到太太跟女兒 他所屬的公司正是我公司的重要客戶,當時我們雙方營業額都在快速成長 也正走向國際化的轉型他跟我常常要不停學習新系統讓工作營運能避免人為的操作錯誤 導致損失,他做人資主管面對公司要跨入國
Thumbnail
大家隨著在公司的年資越來越久, 和公司的發展之下, 都會開始帶新人。 有一次老闆叫我到會議室約談,原本想說有好康。 因為之前的幾次,不是發project 獎金,不然就是發餐券等 沒想要這一次要我帶五個新人。
Thumbnail
大家隨著在公司的年資越來越久, 和公司的發展之下, 都會開始帶新人。 有一次老闆叫我到會議室約談,原本想說有好康。 因為之前的幾次,不是發project 獎金,不然就是發餐券等 沒想要這一次要我帶五個新人。
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
台灣麥當勞在僱用中高齡員工時,提出了很多,堪稱革命性的創舉,
Thumbnail
台灣麥當勞在僱用中高齡員工時,提出了很多,堪稱革命性的創舉,
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News