gpt4 book ai didi

MySQL-查找行的范围

转载 作者:行者123 更新时间:2023-11-29 12:31:40 25 4
gpt4 key购买 nike

假设我有这张表:

Table
Date B C rownum
1-1-2014 8 2 1
1-2-2014 8 4 2
1-3-2014 8 2 3
1-4-2014 8 5 4
1-1-2014 9 2 5
1-2-2014 9 0 6
1-3-2014 9 0 7
1-4-2014 9 1 8

这有点复杂:我想找到 C 列总和 <= 范围内行数的 1/3 的行范围,而且还按 B 列进行分组。

因此,在这种情况下,唯一的范围是第 6 行本身、第 7 行本身、第 6 行到第 7 行的范围以及第 6 行到第 8 行的范围 - 我理想情况下希望限制返回的范围那些长度超过 2 行,这样就只剩下第 6 行到第 8 行。

到底如何在 MySQL 中执行此操作?是否可以?我已经尝试了一段时间,但找不到任何能给我类似我想要的东西的东西。

提前致谢。

最佳答案

假设序列是指按日期列排序并且 b 列的值相同,则可以通过自连接生成所有序列:

select t.b, t.date as startdate, t2.date as enddate
from table t join
table t2
on t.b = t2.b and t.date <= t2.date;

然后您可以使用另一个连接和聚合来获取总和:

select t.b, t.date as startdate, t2.date as enddate,
sum(tt.c) as sumc, count(*) as numrows
from table t join
table t2
on t.b = t2.b and t.date <= t2.date join
table tt
on tt.b = t.b and tt.date between t.date and t2.date
group by t.b, t.date, t2.date;

然后您可以添加一个 having 子句来获得您想要的内容:

having sum(tt.c) <= count(*) / 3

关于MySQL-查找行的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27392242/

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