首页 > 解决方案 > MySQL - 重复计算列中两个值之间的行数

问题描述

我有一张这样的桌子

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。

非常感谢任何帮助/建议!

标签: mysqlsql

解决方案


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';

小提琴


推荐阅读