MySQL - 重复计算列中两个值之间的行数

标签 mysql sql

我有一张像这样的 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';

Fiddle

关于MySQL - 重复计算列中两个值之间的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59588927/

相关文章:

python - 按照模式/序列分割一串数字

MySQL 使用 AND 语句查找重复记录

python - 如何让机器人框架等到数据出现在MySQL表上才继续测试用例执行

sql - 如何将 SQL 结果集限制为不太常见的项目

sql - 在 SQL Server 中选择最后一个零右边的数字

java - 如何在 EL 中从 JSP 访问 getColumnNames?

sql - 根据连接中的某些条件显示对的查询

带有 GROUP BY 的 SQL EXISTS 运算符

php - 确定哪些用户上传了图像?

php - 计算 MySQL 数据库的 Unicode 字符数