ウィンドウ関数
TiDBでのウィンドウ関数の使用法は、MySQL8.0での使用法と似ています。詳細については、 MySQLウィンドウ関数を参照してください。
ウィンドウ関数はパーサーに追加の単語を予約するため、TiDBにはウィンドウ関数を無効にするオプションがあります。アップグレード後にSQLステートメントの解析中にエラーが発生した場合は、 tidb_enable_window_function=0
を設定してみてください。
GROUP_CONCAT()
とAPPROX_PERCENTILE()
を除いて、TiDBはGROUP BY
集計関数すべてをサポートします。さらに、TiDBは次のウィンドウ関数をサポートしています。
関数名 | 機能の説明 |
---|---|
CUME_DIST() | 値のグループ内の値の累積分布を返します。 |
DENSE_RANK() | パーティション内の現在の行のランクを返します。ランクにはギャップがありません。 |
FIRST_VALUE() | 現在のウィンドウの最初の行の式の値を返します。 |
LAG() | パーティション内で現在の行の前の行からN行だけ式の値を返します。 |
LAST_VALUE() | 現在のウィンドウの最後の行の式の値を返します。 |
LEAD() | パーティション内で現在の行にN行続く行から式の値を返します。 |
NTH_VALUE() | 現在のウィンドウのN番目の行から式の値を返します。 |
NTILE() | パーティションをN個のバケットに分割し、パーティション内の各行にバケット番号を割り当て、パーティション内の現在の行のバケット番号を返します。 |
PERCENT_RANK() | 現在の行の値よりも小さいパーティション値のパーセンテージを返します。 |
RANK() | パーティション内の現在の行のランクを返します。ランクにはギャップがあるかもしれません。 |
ROW_NUMBER() | パーティション内の現在の行の番号を返します。 |