🍣

データサイエンス100本ノック~SQL~ちょこっとメモ

2022/11/17に公開

最近業務でSQLを扱うため勉強目的で「データサイエンス100本ノック」に挑戦し始めました。
挑戦した問題で気になったSQLなどをご紹介するだけの記事でス。
ちなみに、私のSQLレベルは下記Udemyを視聴した程度のド素人です。
https://www.udemy.com/course/sql-begginer/

データサイエンス100本ノック環境構築

環境構築については下記をご参照ください。
私は自前のWindows上で動かしています。
https://zenn.dev/kyami/articles/b9e58283908bee

ちょこっとメモ

RANK関数

お題

売上金額(amount)が高い順にランク付けし、10件表示させる。ただし、売上金額が等しい場合は同一順位とすること

select 
	customer_id, 
	amount, 
	rank() over(order by amount desc) 
from 
	receipt
limit 10;

ROW_NUMBER関数

お題

売上金額(amount)が高い順にランク付けし、10件表示させる。ただし、売上金額が等しい場合でも別順位とすること

select 
	customer_id, 
	amount, 
	row_number() over(order by amount desc) 
from 
	receipt
limit 10;

PERCENTILE_CONT関数

お題

店舗コード(store_cd)ごとに売上金額(amount)の中央値を計算し、降順でTOP5を表示せよ。

select 
	store_cd,
	PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY amount) as amount
from
	receipt
group by store_cd 
order by amount desc
limit 5;

MODE関数

お題

店舗コード(store_cd)ごとに売上金額(amount)の最頻値を計算し、10件表示せよ。

select 
	store_cd,
	mode() WITHIN GROUP (ORDER BY amount) as amount_mode 
from 
	receipt group by store_cd 
limit 10;

Discussion