> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ntile ウィンドウ関数のドキュメント

# ntile

パーティション内で順序付けされた行を、指定した数のバケット (グループ) にできるだけ均等なサイズで分割し、現在の行が属するバケット番号を返します。バケット番号は 1 から始まります。各パーティションでは、行は順番にバケットへ割り当てられます。行数がバケット数で割り切れない場合は、先頭側のバケットに後続のバケットより 1 行多く割り当てられます。

**構文**

```sql theme={null}
ntile (buckets)
  OVER ([[PARTITION BY grouping_column] [ORDER BY sorting_column]
        ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING] | [window_name])
FROM table_name
WINDOW window_name as ([PARTITION BY grouping_column] [ORDER BY sorting_column] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
```

引数 `buckets` には、正の定数整数を指定する必要があります。

`ORDER BY` 句が必要です。ウィンドウフレームはパーティション全体 (`ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING`) でなければなりません。これは、明示的な指定がない場合に使用されるデフォルトのフレームでもあります。

window function の構文の詳細については、[Window Functions - Syntax](/docs/ja/reference/functions/window-functions/index#syntax) を参照してください。

**戻り値**

* 現在の行の、属するパーティション内でのバケット番号。[UInt64](/docs/ja/reference/data-types/int-uint)。

**例**

次の例では、プレイヤーを給与の降順で 4 つのバケットに分けます。

```sql title="Query" theme={null}
CREATE TABLE salaries
(
    `team` String,
    `player` String,
    `salary` UInt32,
    `position` String
)
Engine = Memory;

INSERT INTO salaries FORMAT Values
    ('Port Elizabeth Barbarians', 'Gary Chen', 195000, 'F'),
    ('New Coreystad Archdukes', 'Charles Juarez', 190000, 'F'),
    ('Port Elizabeth Barbarians', 'Michael Stanley', 150000, 'D'),
    ('New Coreystad Archdukes', 'Scott Harrison', 150000, 'D'),
    ('Port Elizabeth Barbarians', 'Robert George', 195000, 'M'),
    ('South Hampton Seagulls', 'Douglas Benson', 150000, 'M'),
    ('South Hampton Seagulls', 'James Henderson', 140000, 'M');
```

```sql title="Query" theme={null}
SELECT player, salary,
       ntile(4) OVER (ORDER BY salary DESC, player ASC) AS bucket
FROM salaries;
```

```response title="Response" theme={null}
   ┌─player──────────┬─salary─┬─bucket─┐
1. │ Gary Chen       │ 195000 │      1 │
2. │ Robert George   │ 195000 │      1 │
3. │ Charles Juarez  │ 190000 │      2 │
4. │ Douglas Benson  │ 150000 │      2 │
5. │ Michael Stanley │ 150000 │      3 │
6. │ Scott Harrison  │ 150000 │      3 │
7. │ James Henderson │ 140000 │      4 │
   └─────────────────┴────────┴────────┘
```

ここでは7行と4つのバケットがあるため、最初の3つのバケットにはそれぞれ2行ずつ、最後のバケットには1行だけが含まれます。
