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
小松鼠的演算法樂園
99會員
428內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
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
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
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 獎金,不然就是發餐券等 沒想要這一次要我帶五個新人。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News