我有一个MySQL表,类似于这个例子:
c_id date value
66 2015-07-01 1
66 2015-07-02 777
66 2015-08-01 33
66 2015-08-20 200
66 2015-08-21 11
66 2015-09-14 202
66 2015-09-15 204
66 2015-09-16 23
66 2015-09-17 0
66 2015-09-18 231
我需要得到的是日期排在一起的时期.我没有固定的开始或结束日期,可以有任何.
例如:2015-07-01 – 2015-07-02是一个priod,2015-08-01是第二期,2015-08-20 – 2015-08-21是第三期和2015-09-14 – 2015- 09-18为第四期.所以在这个例子中有四个时期.
SELECT
SUM(value) as value_sum,
... as period_count
FROM my_table
WHERE cid = 66
不能整天想出来……谢谢.
解决方法:
我没有足够的声誉对上述答案发表评论.
如果你需要的只是分数数,那么你可以简单地改写你的问题:“有多少条目有一个日期D,这样日期D – 1 DAY没有条目吗?”
在这种情况下,这就是您所需要的:
SELECT
COUNT(*) as PeriodCount
FROM
`periods`
WHERE
DATE_ADD(`date`, INTERVAL - 1 DAY) NOT IN (SELECT `date` from `periods`);
在PHP中,只需从第一行中选择“PeriodCount”列.
你让我在制作一些疯狂的存储过程方法,直到澄清:P
标签:mysql
来源: https://codeday.me/bug/20190727/1557587.html