【发布时间】:2018-02-19 18:22:37
【问题描述】:
我有一个(mysql)表,如下所示:
|date |status
|2017-07-10|done
|2017-07-10|new
|2017-07-11|done
|2017-07-11|done
|2017-07-12|done
|2017-07-12|done
|2017-07-12|new
现在我想要每个日期的状态完成(或所有状态)的计数差异所以在 2017 年 7 月 11 日我得到一个,因为状态完成比前一天多一个,依此类推.
|date |cnt
|2017-07-11|1
|2017-07-12|0
我已经有一个 SQL,它给我一个输入日期的结果:
SELECT '2017-07-11' as d2,
(SELECT count(*) as cnt
FROM table
WHERE status = 'done'
AND date > DATE_ADD(d2, INTERVAL 1 DAY)
AND date < DATE_ADD(d2, INTERVAL 2 DAY)) -
(SELECT count(*) as cnt
FROM table
WHERE status = 'done'
AND date > d2
AND date < DATE_ADD(d2, INTERVAL 1 DAY)) as cnt;
但这仅适用于 d2 的静态日期,而不是子查询。任何人都可以帮忙吗?如果可能的话,我也会为 postgres 提供解决方案。
【问题讨论】:
标签: mysql sql aggregation