需要一个 SQL select 查询,其中的行列仅在行的 id 列唯一时递增
Needed a SQL select query, with a row column which is incremented only when a row's id column is unique
给定一个 table:
# Id Val
1 1111111111 Andre
2 1111111111 Bart
3 1111111111 Corry
4 2222222222 Donald
5 2222222222 Eric
6 3333333333 Fiona
我想 select table 有一个指标:对具有相同 id 的行进行分组,即得到类似的东西:
# Id Val
1 1111111111 Andre
1 1111111111 Bart
1 1111111111 Corry
2 2222222222 Donald
2 2222222222 Eric
3 3333333333 Fiona
在此我想出了解决方案:
SELECT
(
row_number() OVER (ORDER BY id) - row_number() OVER (PARTITION BY id ORDER BY id) + 1
) nGroupedToRow,
row_number() OVER (ORDER BY id) nRow,
row_number() OVER (PARTITION BY id ORDER BY id) nNumDupl,
id,
val
FROM table1
产生:
nGroupedToRow nRow nNumDupl Id Val
1 1 1 1111111111 Andre
1 2 2 1111111111 Bart
1 3 3 1111111111 Corry
4 4 1 2222222222 Donald
4 5 2 2222222222 Eric
6 6 1 3333333333 Fiona
认为这可能对某人有所帮助……也许有人可以改进它……也许有人问过类似的问题,但我找不到它,尽管关于堆栈溢出的其他解决方案将我引向了这个问题。 ..
SELECT
(
row_number() OVER (ORDER BY id) - row_number()
OVER (PARTITION BY id ORDER BY id) + 1
) nGroupedToRow,
row_number() OVER (ORDER BY id) nRow,
row_number() OVER (PARTITION BY id ORDER BY id) nNumDupl,
id,
val
FROM table1
给定一个 table:
# Id Val
1 1111111111 Andre
2 1111111111 Bart
3 1111111111 Corry
4 2222222222 Donald
5 2222222222 Eric
6 3333333333 Fiona
我想 select table 有一个指标:对具有相同 id 的行进行分组,即得到类似的东西:
# Id Val
1 1111111111 Andre
1 1111111111 Bart
1 1111111111 Corry
2 2222222222 Donald
2 2222222222 Eric
3 3333333333 Fiona
在此我想出了解决方案:
SELECT
(
row_number() OVER (ORDER BY id) - row_number() OVER (PARTITION BY id ORDER BY id) + 1
) nGroupedToRow,
row_number() OVER (ORDER BY id) nRow,
row_number() OVER (PARTITION BY id ORDER BY id) nNumDupl,
id,
val
FROM table1
产生:
nGroupedToRow nRow nNumDupl Id Val
1 1 1 1111111111 Andre
1 2 2 1111111111 Bart
1 3 3 1111111111 Corry
4 4 1 2222222222 Donald
4 5 2 2222222222 Eric
6 6 1 3333333333 Fiona
认为这可能对某人有所帮助……也许有人可以改进它……也许有人问过类似的问题,但我找不到它,尽管关于堆栈溢出的其他解决方案将我引向了这个问题。 ..
SELECT
(
row_number() OVER (ORDER BY id) - row_number()
OVER (PARTITION BY id ORDER BY id) + 1
) nGroupedToRow,
row_number() OVER (ORDER BY id) nRow,
row_number() OVER (PARTITION BY id ORDER BY id) nNumDupl,
id,
val
FROM table1