gpt4 book ai didi

mysql - 根据连续出现对数据进行分组和计数

转载 作者:行者123 更新时间:2023-11-30 21:56:54 25 4
gpt4 key购买 nike

我很难定义问题,也许你通过我的虚拟数据理解它

我有这个数据:

PK, TaskPK
1, 1
2, 1
3, 2
4, 2
5, 5
6, 1
7, 1
8, 2
9, 2
10, 5
11, 5

现在我必须计算 TaskPK 所以,我进行此查询

Select PK, TaskPK, Count(*)
From tbl
Group by TaskPK

它带来了这个结果

TaskPK, Count(*)
1, 4
2, 4
5, 3

但我想要稍微不同的结果像这样

TaskPK, Count(*)
1, 2
2, 2
5, 1
1, 2
2, 2
5, 2

以上结果基于连续数据出现,因为TaskPK从1开始(组合在一起),然后它变成2(组合在一起),然后5(组合在一起)taskPK。 但是随着 TaskPK 再次转移到 1,那么它应该单独分组而不是与之前出现的 1 链接,这个任务单独计数,这可能吗?

最佳答案

对于 Mysql - 用于跟踪连续段的用户变量。然后按由递增计数器跟踪的连续段分组,

SELECT MAX(TaskPK),COUNT(*)
FROM(SELECT PK,TaskPK,CASE WHEN TaskPK=@TaskPK THEN @rn ELSE @rn:=@rn+1 END as g,
@TaskPK := TaskPK as task
FROM Test,(SELECT @rn:=0,@TaskPK:='')x
ORDER BY pk)z
GROUP BY g
ORDER BY pk;

See it working

关于mysql - 根据连续出现对数据进行分组和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44858355/

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