MySQL
はウィンドウ関数をサポートしていないようです。
例えば。シンプル:COUNT(*) OVER() AS cnt
は機能しません。
これが商用バージョンにも当てはまるかどうかはわかりません(コミュニティバージョンは限られたサブセットだと思います)。
そうでない場合、この不足している機能を回避するにはどうすればよいですか?
MySQLはウィンドウ関数(*)をサポートしていません。 GROUP_CONCAT() の形式で「貧乏人の窓関数」と呼んでいるものがあります。
_GROUP_CONCAT
_を使用してウィンドウ関数をエミュレートするトリックはたくさんあります。それらは(構文的に)きれいではなく、制限が多すぎる場合があります。いくつか書きました。私のブログ投稿 欠落しているウィンドウ関数についての不満 、および_GROUP_CONCAT
_に基づくさまざまなソリューションへのリンクを参照してください。
特に、 GROUP BYで特定の非集計列データを選択する および SQL:グループごとに上位Nレコードを選択する、別のソリューション は、興味があるかもしれません。キックスタート。
GROUP_CONCAT()
について注意すべき点:
DISTINCT
を使用できますORDER BY ... ASC/DESC
_を使用できますSEPARATOR
を設定できます(*)MySQL 8でウィンドウ関数のサポートが追加されました
MariaDB 10.2(2017年5月にリリース)には ウィンドウ関数 があることに注意してください。 MySQLとウィンドウ関数が必要な場合、それは確かに追求する1つの方法です。