データサイエンティスト100本ノックというWeb上のフリー教材にて、以下のような問題と回答がありました。
▼問題
S-042: レシート明細テーブル(receipt)の売上金額(amount)を日付(sales_ymd)ごとに集計し、各日付のデータに対し、1日前、2日前、3日前のデータを結合せよ。結果は10件表示すればよい。
▼回答例
-- コード例1:縦持ちケース WITH sales_amount_by_date AS ( SELECT sales_ymd, SUM(amount) as amount FROM receipt GROUP BY sales_ymd ORDER BY sales_ymd ), sales_amount_lag_date AS ( SELECT sales_ymd, COALESCE(LAG(sales_ymd, 3) OVER (ORDER BY sales_ymd), MIN(sales_ymd) OVER (PARTITION BY NULL)) as lag_date_3, amount FROM sales_amount_by_date ) SELECT a.sales_ymd, b.sales_ymd as lag_ymd, a.amount as amount, b.amount as lag_amount FROM sales_amount_lag_date a JOIN sales_amount_lag_date b ON b.sales_ymd >= a.lag_date_3 and b.sales_ymd < a.sales_ymd ORDER BY sales_ymd, lag_ymd LIMIT 10;
このSQL中の、
MIN(sales_ymd) OVER (PARTITION BY NULL)
のPARTITION BY NULLは何を意味しているのでしょうか。
恐れ入りますがよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/09/19 00:50