データサイエンス100本ノックでSQLとPythonを勉強していきます。
S-028: レシート明細テーブル(receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の中央値を計算し、降順でTOP5を表示せよ。
SQLでは以下のようになります。
%%sql 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;
PERCENTILE_CONT関数は知らなかったのですが、中央値を求める時に使うようです。
普段の業務で中央値を求めることはあんまりないのですが、何かあればググってこの関数に辿り着けるようにしたいと思います。
Pythonだと以下のようになります。
df_receipt.groupby('store_cd').agg({'amount':'median'}).reset_index(). \ sort_values('amount', ascending=False).head(5)