我有一个 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 是第一期,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获取行中日期的时间段数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32588818/