見出し画像

【Redshift】データ集計に便利な関数Tips

SELECT結果に連番(順位)を振る:ROW_NUMBER関数

使用例)id単位で優先度(priority)が1位の人を取得する

select * from
(
select
*
, row_number() over(partition by id order by priority desc) as rank
from myDataSource
)
where rank = 1

集計内容をリスト化する:LISTAGG関数

使用例)顧客ごとの商品とカテゴリをスラッシュ区切りでリスト化する
※NULLと空文字は無視される

SELECT customer,
LISTAGG(product,'/') WITHIN GROUP (ORDER BY product) AS 商品リスト,
LISTAGG(category,'/') WITHIN GROUP (ORDER BY product) AS カテゴリリスト
FROM myDataSource
GROUP BY customer

日時操作①日時から日付のみ取り出す:TRUNC関数

日時操作②指定した日時の〇日後、〇日前を取得する:DATEADD関数

日時操作③日時の差分を取得する:DATEDIFF関数

日時操作④タイムゾーン変換:CONVERT_TIMEZONE関数

使用例)日本時間に変換したジョブ実行日(job_execution_date)の6か月前の日時を取得後、日付のみ取り出す

trunc(dateadd(month,-6,convert_timezone('Japan', to_date(job_execution_date,'YYYY-MM-DD'))))


この記事が気に入ったらサポートをしてみませんか?