SQLのWINDOW関数
MySQLはv8.0.2からサポート
SQLSELECT shohin_id, shohin_mei, hanbai_tanka,
AVG (hanbai_tanka) OVER (ORDER BY shohin_id
ROWS BETWEEN 2 PRECEDING
AND CURRENT ROW) AS moving_avg
FROM Shohin;
OVER
のあとの
()
の中身がwindowなのか

sqlSELECT shohin_id, shohin_mei, hanbai_tanka,
AVG(hanbai_tanka) OVER W AS moving_avg
FROM Shohin
WINDOW W AS (ORDER BY shohin_id
ROWS BETWEEN 2 PRECEDING
AND CURRENT ROW);
WINDOW W AS
のあとのカッコの中身がwindowなのか

前者はシンプルに書ける
後者はwindowの使い回しができる
window関数の3つの機能
FRAME句に依るcurrent recordを中心としたsubsetの定義
WINDOW関数はカットの部分のみを担い、適当な集約関数と組み合わせて使用する
だから、カットと集約がセットになっているGROUP BYと比べて、
より柔軟に集約ができる
若干わかりづらいのは、
集約&カットの GROUP BY
と、
カットのみの OVER (..)
が、
出現する場所が異なる点

GROUP BYはSQLの最後の方に書くのが普通だが、 OVER (..)
はSELECT句内に書く
これは

が知らんだけで、他の場所に書けるのかもしれないけど
この辺のキーワードは全てウィンドウ関数専用のものなのか?
WINDOW, ROWS, OVER, CURRENT, ROW, ROWS, PRECEDING
SQLをシランので判別できない
参考
シンプルで基本的なことがわかりやすい