B3S
menu close

MySQL

[MySQL]ウインドウ関数


ヤス

更新日:2021/08/12


お久しぶりでございます。ヤスです。

幾分も前からMySQLerの私とは無縁であった「ウインドウ関数」なるものがMySQLにも到来したとのことで、丁度いい案件が転がっていたので、初めて使ってみました。

とある日・・・

ある日、上司から部下Aさんに命令がくだりました。「特定の費用を集計しろ!なおかつ、費用計はある特定の数の割合で按分せよ!(※)」と※弊社にこのような口調の上司はおりません。

部下AさんはSQLを書きながら、「全体の按分?SQLだけじゃ無理じゃないけどSQLの視認性低いし、データのこねこねはビジネスロジックでやろー」と考えました。

こんなんええやん

実はこんな全体の割合をだすときに「ウインドウ関数」を使うと、SQLだけで算出できるのです。

※A表からB表を作りたい
A表

部署名
1 5000
2 5000
3 10000

B表

部署名 金額 割合
1 5000 25
2 5000 25
3 10000 50

時間の都合上、後半がとても雑になり大変申し訳無いですが、要するにこの「OVER()」という関数を使うことで、明細と集計が混在できるということが大きなメリットかと思います。