MySQL
[MySQL]ウインドウ関数
ヤス
更新日:2021/08/12
お久しぶりでございます。ヤスです。
幾分も前からMySQLerの私とは無縁であった「ウインドウ関数」なるものがMySQLにも到来したとのことで、丁度いい案件が転がっていたので、初めて使ってみました。
とある日・・・
ある日、上司から部下Aさんに命令がくだりました。「特定の費用を集計しろ!なおかつ、費用計はある特定の数の割合で按分せよ!(※)」と※弊社にこのような口調の上司はおりません。
部下AさんはSQLを書きながら、「全体の按分?SQLだけじゃ無理じゃないけどSQLの視認性低いし、データのこねこねはビジネスロジックでやろー」と考えました。
こんなんええやん
実はこんな全体の割合をだすときに「ウインドウ関数」を使うと、SQLだけで算出できるのです。
1 |
SELECT 部署名, 金額, 金額 / SUM(金額) OVER() AS 割合 FROM A |
※A表からB表を作りたい
A表
部署名 | 数 |
---|---|
1 | 5000 |
2 | 5000 |
3 | 10000 |
B表
部署名 | 金額 | 割合 |
---|---|---|
1 | 5000 | 25 |
2 | 5000 | 25 |
3 | 10000 | 50 |
時間の都合上、後半がとても雑になり大変申し訳無いですが、要するにこの「OVER()」という関数を使うことで、明細と集計が混在できるということが大きなメリットかと思います。