1
特定の共有特性に基づいて、各グループまたは行のパーティションに番号を付けるには、どのようにウィンドウ関数などを使用しますか?例えばPostgreSQLの各グループに番号を付ける方法
:
私はグループに希望のアルファベット順の名前のリストを持っており、各グループ内で、彼らが属するグループと位置を記述するIDを使用して識別します。
-------------------------------------------
| outer_id | inner_id | src_id | name |
|----------|----------|--------|----------|
| 1 | 1 | 88129 | albert |
| 1 | 2 | 88130 | albrecht |
| 1 | 3 | 88131 | allan |
| 2 | 1 | 88132 | barnaby |
| 2 | 2 | 88133 | barry |
| 2 | 3 | 88134 | bart |
-------------------------------------------
私は、次のようなクエリを使用してinner_id
、src_id
とname
を達成することができます
WITH cte (src_id, name) AS (
VALUES
(88129, 'albert'),
(88130, 'albrecht'),
(88131, 'allan'),
(88132, 'barnaby'),
(88133, 'barry'),
(88134, 'bart')
)
SELECT row_number() OVER (partition by left(name, 1) ORDER BY name DESC) AS inner_id, src_id, name
FROM cte;
は、どのように私は、各ウィンドウ(またはグループ)を表現するために、示されているようouter_id
列を追加するに行きますか?
エクセレントを - あなたのゴードンに感謝し、また、例えば。 – atdfairfax