美國面試考題 Stratascratch SQL ID 9917

閱讀時間約 2 分鐘

每日動動腦,用美國企業真實的面試考題來練習,每天7題,我會把免費的428題簡單SQL都做完,大概會用到兩個月,有需要的人,也可以直接搜ID。

美國企業真實SQL考題 - stratascratch

美國企業真實SQL考題 - stratascratch

解題日:2023/8/28

今天的第幾題:7/7

哪些美國企業考過這題?

Salesforce, Glassdoor

難易度:簡單

一起看題目

題目:

有一張員工資料表,裡面有部門、員工名字、薪水等。請列出每個員工的名字、所屬部門、該名員工的薪水,以及該部門平均薪資,共四個欄位。

答案預覽

答案預覽

/* 解法一
比較複雜,基本上就是把兩張表結合在一起,你可能會問,第二張表在哪裡?
底下有一個只算出部門平均薪資的sub query 這可以當成第二張表
*/
SELECT e1.department,
first_name,
salary,
avg_salary_of_dept
FROM employee e1
LEFT JOIN
(SELECT department,
AVG(salary) AS avg_salary_of_dept
FROM employee e1
GROUP BY department) e2
ON e1.department = e2.department;
/* 解法二
比較優雅,前提是要知道怎麼使用 OVER PARTITION BY */
SELECT department,
first_name,
salary,
AVG(salary) OVER (PARTITION BY department)
FROM employee;

運用:

有些SQL功能會幫你省下很多行code,而且又好讀。

心得:

我第一個想法是用JOIN,沒有先想到OVER PARTITION BY,我很高興我有這個練習,也看了其他人的解法,這樣學起來很有效率。因為大家想法不同,可以明白其他人的思路。


Kristen
Kristen
留言0
查看全部
發表第一個留言支持創作者!