[數據分析#53] SQL 連續日期、連續名單日期寫法:場景及程式碼

今天分享在 Presto SQL 下,常用的練續日期產生方式!

什麼情境下會需要寫 SQL 連續日期?

  • 當你需要產出完整日期及對應的資料時

連續日期怎麼寫?

  • Presto SQL 在產出連續日期時,會用到:sequence 跟 unnest

情境一:產出一段期間內的連續日期

  • 在 sequence 裡面放入日期的範圍,他會變成一個 array (陣列形式)
  • 再用 unnest 把陣列形式裡的資料,拆解成一欄資料
SELECT t.grass_date
FROM unnest(sequence(date('2022-01-01'), date('2022-12-31'))) AS t(grass_date)
ORDER BY 1

情境二:產出設定條件內的連續日期

  • 在 sequence 裡面放入日期的條件範圍
  • 再用 unnest 把陣列形式裡的資料,拆解成一欄資料
SELECT t.grass_date
FROM unnest(sequence(date('2022-01-01'), current_date - interval '1' day)) AS t(grass_date)
ORDER BY 1

連續名單跟日期怎麼寫?

  • Presto SQL 在產出連續日期時,會用到:sequence 跟 unnest
  • Presto SQL 在產出連續日期跟連續名單時,假設日期 (10 天) x 連續名單 (5 個名單) = 50 列,需要用到 cross join
with aggr_days AS (
	SELECT t.grass_date
	FROM unnest(sequence(date('2022-01-01'), date('2022-01-10'))) AS t(grass_date)
	ORDER BY 1
)

, user_list (user_id) AS (VALUES
(1)
, (2)
, (3)
, (4)
, (5)
)

SELECT
user.user_id
, aggr_days.grass_date
FROM (SELECT user_id FROM user_list) AS user
CROSS JOIN aggr_days
  • 所以就產出的資料而言:一個 user_id 會對到一串完整的日期,有幾個 user_id (範例為 5 個),就會分別對到幾個日期 (範例中的日期為 10 天),5*10=50 (50 行)
user_idgrass_date
12022/1/1
12022/1/2
12022/1/3
12022/1/4
12022/1/5
12022/1/6
12022/1/7
12022/1/8
12022/1/9
12022/1/10

連續日期及名單的常見商業用法?

  • 通常用戶不一定會在每個日期都下單,因此沒下單的那一天就不會有資料
  • 但是當我們想要計算有多少用戶在那一天沒下單時,raw data 就會需要沒下單的用戶也出現,只是 order = 0 或是 null (空白),好讓我們計算 order = 0 或是 null 的人有多少;就知道當天沒下單有多少人,或是誰沒下單

結論

  • 有些小技巧雖然在一般 SQL 教學時不會提及
  • 但是在商業應用上卻很常見!
  • 可以知道有這些小技巧,如果需要時再回來看 SQL code 怎麼寫 (不一定要背下來)

【1 對 1 免費諮詢】數據分析師 0~1 培訓班陪你一路到轉職成功!

hi 我是 Lisa

你也是 0 經驗、沒有相關背景,但也想要轉職數據分析師,或運用數據分析,提升在領域的專業度嗎?

-

你是否也覺得,數據分析的網路學習資源很多,但是多到不知道從哪裡開始?

學了很多工具,但學完了,問題才真正開始,不知道業界怎麼使用?又該如何面臨工作跟面試?

-

我在 2019 年從營運專員的職位轉職到數據分析師

在這之後,因為數據分析,也讓我快速建構不同領域的知識:行銷、營運、商業策略、產品、網頁

轉職過程中,花了很多時間成本摸索

我發現,學數據分析最快的方式是:

  1. 確認自己跟市場需求之間的差距:訂定轉職策略及了解數據分析師的工作方式
  2. 以業界應用的角度學習工具:包括數據工具及分析用思維架構,並且如何高效運用
  3. 建立一個商業上的真實專案,並且得到回饋:打造屬於你及貼合職缺需求的作品集和專案
  4. 打造一個高效履歷跟面談:透過高價值包裝術拿下面試、成功獲得數據行業的門票

當初如果我有這套系統思維,應該可以在短時間內轉職,馬上拿到進入業界的門票

-

現在,我想把這套完整課程分享給你

這是專門為了 0 經驗、沒有相關背景的轉職者所設計

不需要去考研究所、不需要花大錢準備出國讀書

可以用最快的時間準備轉職、拿到門票!

-

如果你正在準備轉職數據分析師,且試圖找過解決辦法卻始終治標不治本!歡迎跟我預約免費 1 對 1 諮詢,我會在諮詢時,了解你的需求並且評估我是否可以協助到你!

電子書 職場人必學的數據分析術

Lisa Wu

Hi 大家好!我是喜歡探索身心靈健康及平衡的數據分析師 Lisa Wu!這個網站會幫助你:利用數據分析 (理性) 及 身心靈平衡 (感性) 的系統,去達成人生目標!如果你對我的人生系統工具有興趣,歡迎聯繫我:couplehonest@gmail.com

This Post Has One Comment

Comments are closed.