美國面試考題 Stratascratch SQL ID 10061

閱讀時間約 2 分鐘

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

raw-image

美國企業真實SQL考題 - stratascratch

解題日:2023/8/28

今天的第幾題:3/7

哪些美國企業考過這題?

Facebook/Meta

難易度:簡單

一起看題目

題目:

臉書公司自創了一個程式語言叫做Hack,又用問卷調查公司員工,對於這新語言的評分(好感度),但是收問卷的時候,「地點」漏掉了。現在有兩張表,一張是員工表,上面有員工編號、工作地點等。另一張是問卷收集的結果,有員工編號和評分。

這是最後要解出來的樣子:

ID 10061

ID 10061

答案中,第一欄是地點,第二欄是平均好感度分數。

-- 這是先整合了整張表以後,再選擇要的東西,可以不用這麼複雜。​
WITH big_table AS (
SELECT * FROM facebook_hack_survey a
LEFT JOIN facebook_employees b
ON a.employee_id = b.id
)
SELECT location,
AVG(popularity)
FROM big_table
WHERE location IS NOT NULL -- 因為我試跑了以後發現,地點欄位有空白的資料,所以加上這行。
GROUP BY location;
-- 這個解法是比較直接也清楚的,沒有多餘的步驟。
SELECT location,
AVG(popularity)
FROM facebook_employees e
JOIN facebook_hack_survey h
ON e.id = h.employee_id
GROUP BY location;

運用:

兩張表格中共同都有的欄位,並用這個共同欄位組合兩張表格,是非常實用的。有時候你要的資訊和運算,必須先把兩張表統合起來才可以得到。

心得:

我第一個想法是先把兩張表,用CTE(Common Table Expression)組合成暫存資料表,可能是之前我的Mentor一直要求我這樣練習吧!不過第二個解法是比較直接,而且JOIN有很多種,這是必須要會的。





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