Skip to content

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,會在同一列顯示兩次符合篩選的欄位
搭配以下的選擇方式,就會產出能未來作當做「比對」的表格

  1. INNER JOIN 兩張表格有相同的「欄位」
  2. 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。