我有一张像这样的 table
id | status | data | date
----|---------|--------|-------
1 | START | a4c | Jan 1
2 | WORKING | 2w3 | Dec 29
3 | WORKING | 2d3 | Dec 29
4 | WORKING | 3ew | Dec 26
5 | WORKING | 5r5 | Dec 23
6 | START | 2q3 | Dec 22
7 | WORKING | 32w | Dec 20
8 | WORKING | 9k5 | Dec 10
and so on...
我想做的是获取两个“START”之间的“WORKING”行数,即
id | status | count | date
----|---------|--------|-------
1 | START | 4 | Jan 1
6 | START | 2 | Dec 22
and so on ...
我使用的是 MySql 5.7.28。
非常感谢任何帮助/建议!
最佳答案
date
在示例中无法使用,请尝试使用 id
作为排序列
select id, status,
(select count(*)
from mytable t2
where t2.id > t.id and t2.status='WORKING'
and not exists (select 1
from mytable t3
where t3.id > t.id and t3.id < t2.id and status='START')
) count,
date
from mytable t
where status='START';
关于MySQL - 重复计算列中两个值之间的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59588927/