2023-05-13 001題
答題需具備知識: WHERE IN() 讓回傳的序列作爲篩選的標準、!= 不等於 的符號
題目要求查詢,並於兩個欄位中同時篩選,A欄位 等於 'a'和'b';但B欄位 不包含'c'
語法將會如下
SELECT A, B
2023-05-13 002題
答題需具備知識: UNION 以及 UNION ALL的差別,只在於是否保留重複值
題目要求將兩個欄位相同的表格結合,也不計重複 語法如下
SELECT *
2023-05-13 003題
答題需具備知識: EXTRACT函數、:: (兩個冒號代表將數值轉變爲指形態)、別名
題目要求將時間標籤如 2023-05-13T0809:24:00
只取「日」作爲欄位,重點語法:
EXTRACT(DAY FROM Start_Time) :: NUMERIC AS Start_Day
先利用EXTRACT函數指定
- 第一個參數 DAY
- 固定用法FROM
- 第二個參數 Start_Time,選擇要取用的欄位 再使用 :: 將形態轉換爲 數字
2023-05-13 004題
答題需具備知識:LEFT函數
題目要求只取值的前五位字(目前都是使用英文、數字,通常就是一比一,如果是中文可能會有變動)
重點語法:
LEFT(zip_code,5) AS zip_code
利用LEFT函數指定
- 第一個參數 要取用的欄位
- 第二個參數 要取用位數,從1開始
2023-05-13 005題
答題需具備知識:INNER JOIN、SELFJOIN的邏輯
題目要求將同一個表格的不同欄位結合成新的表格,
用來比對「相同型號」以及「相同發售時間」的「產品售價」
語法DEMO如下:
SELECT s1.model, s2.model, s1.price, s2.price
藉由SELECT 兩次 model、price,會在同一列顯示兩次符合篩選的欄位
搭配以下的選擇方式,就會產出能未來作當做「比對」的表格
- INNER JOIN 兩張表格有相同的「欄位」
- ON那些參數
【s1.productID <> s2.productID】會排除掉擁有相同productID的speaker組合
因爲這裏保留了不同ID組合的產品(因爲來自同一張表格,若要讓ID不相同,則會變成「組合」
2023-05-13 006題
答題需具備知識:EXTRACT函數的知識
題目要求將一張登記每日水果價格的表格,依照每個月份彙總不同水果的價格最高與最低差距
語法DEMO如下:
SELECT EXTRACT(month FROM date::DATE) AS month,
同樣使用了EXTRACT函數,用來提取日期中的「月份」
即:EXTRACT(MONTH(月份) FORM 欄位::(像轉換的形態))
2023-05-13 007題
答題需具備知識:CASE WHEN THEN ELSE END 的使用方法
題目希望在不同數值間建立文字標籤,作爲分類分區的依據
例如100塊以內是便宜,101~1000是貴,1000以上是夭壽貴
語法DEMO如下:
SELECT
記得由CASE開始,給與「當」OOXX「則」OOXX「其他」「結束」= CASE WHEN THEN ELSE END
2023-05-13 008題
答題需具備知識:使用聚合器之後GROUP BY的必要性!
題目希望呈現不同水果的「分類」與「品項」的價格
語法DEMO如下:
SELECT category,
因爲選擇了兩個欄位,而且搭配AVG聚合,所以GROUP BY必須包含兩個欄位
2023-05-13 009題
答題需具備知識:FULL JOIN 的特性
題目希望將表格「腳踏車」與「使用記錄」結合,且保留所有記錄、不在意兩張表是否搭配
語法DEMO如下:
SELECT Trip_ID, Duration, bikeID, last_date_in_use, color
結合之後的表格,如果有MATCH到「腳踏車」的「使用記錄」,
會在記錄後方呈現腳踏車的資訊,若沒有對應Bike的ID就會呈現空值NULL。