MySQL - Iterate Through Table



我想弄清楚如何通过表迭代以获得id未处于活动状态的天数的计数。

假设我有以下表格:

<表类> id 状态日期tbody><<tr>1活动1/15/211的1/13/211活动1/12/211的1/9/211活动1/7/212活动1/5/212的1/4/212的1/2/212活动1/1/21

试试这个:

SELECT id,count(*) as days_inactive FROM table
WHERE status like 'inactive' 
GROUP BY id

您可以使用变量实现您想要的。仅当且仅当id相同且当前行为活动状态时,计算距离前一个日期的天数,如下所示。

select @id :=0, @lastDate := null;
select id, sum(DaysInactive) as DaysInactive
from (
select id, (case when id = @id and status='Active' then datediff(tranDate, @lastDate) else 0 end) as DaysInactive
, @id := id, @lastDate := tranDate
from tablename
order by id, TranDate
) as calc group by id

您可以单独运行内部选择以确认您的计算是正确的。它也应该工作,如果你的表有连续的"非活动"或"活动"状态。为您的表和列名调整上述内容。

相关内容

  • 没有找到相关文章

最新更新