gpt4 book ai didi

mysql - 如何在一个 SELECT 中计算不同组值的行

转载 作者:行者123 更新时间:2023-11-29 07:37:36 25 4
gpt4 key购买 nike

我有一个数据表,它有一个数字指示符,它不是 ID 或外键。这个数字在表中重复了几次。

我需要打印所有包含相同指标值内的增量行号的行,所以 1 有 2 次,2 有 3 次,3 有 1 次。

期望的输出:

name | indicator | rownumber
a 1 1
b 1 2
c 2 1
d 2 2
e 2 3
f 3 1

我找到了 this计算行数的解决方案,但我不知道如何在指示器更改时重置计数器。

到目前为止我的查询是,但这是增量计算行数

SELECT name, indicator, 
@rownum := @rownum + 1 as row_number
FROM rownumtable
CROSS JOIN (SELECT @rownum := 0) r
ORDER BY name ASC

但它会打印行号 - 请参阅 SQL Fiddle

name | indicator | row_number
a 1 1
b 1 2
c 2 3
d 2 4
e 2 5
f 3 6

有没有办法为 MySQL 查询中的特定组相同值重置 row_number 计数器?

最佳答案

SELECT name, indicator,        
@rownum := case when @prevIndicator <> indicator then 1 else @rownum + 1 end as rownumber,
@prevIndicator := indicator
FROM rownumtable
CROSS JOIN (SELECT @rownum := 0, @prevIndicator := 0) r
ORDER BY name ASC

SQLFiddle demo

关于mysql - 如何在一个 SELECT 中计算不同组值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47990607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com