[英]How do i count number of records and group by date every 7 days SQL
我正在尝试编写一个查询,该查询计算每7天创建的记录数,使用此查询,我可以获得每天创建的记录数,
SELECT 'Closed' AS `Status`, COUNT(*) AS `Count`, `raisedon` AS `Date` FROM table WHERE raisedon >= '2019-01-01' and raisedon < '2019-03-29' AND status = 'Open' AND type = 'A' AND location = 'B' AND locationid = 'C' GROUP BY raisedon
这返回
Closed 1 2019-01-01
Closed 1 2019-01-14
Closed 2 2019-01-16
Closed 1 2019-01-24
Closed 1 2019-01-25
Closed 1 2019-01-30
Closed 1 2019-02-01
Closed 1 2019-02-03
Closed 1 2019-02-28
Closed 1 2019-03-07
Closed 1 2019-03-08
我希望结果像
Closed 1 2019-01-01
Closed 1 2019-01-08
Closed 2 2019-01-15
Closed 2 2019-01-22
Closed 3 2019-01-29
Closed 0 2019-02-05
Closed 0 2019-02-12
Closed 0 2019-02-19
Closed 1 2019-02-26
Closed 2 2019-03-05
这可能只是查询还是我也必须使用javascript,我将phpmyadmin与mysql一起使用
感谢您的任何建议
如果您对给定一周开始的边缘条件不太挑剔,则可以使用YEARWEEK
进行汇总:
SELECT
'Closed' AS Status,
COUNT(*) AS cnt,
YEARWEEK(raisedon) AS week
FROM yourTable
WHERE
raisedon >= '2019-01-01' AND raisedon < '2019-03-29' AND
status = 'Open' AND
type = 'A' AND
location = 'B' AND
locationid = 'C'
GROUP BY
YEARWEEK(raisedon);
该答案假设您的数据每周至少有一个数据点。 如果可能存在很大的差距,那么一种解决方案是将日历表加入其中。 这是如何执行此操作的示例:
SELECT
'Closed' AS Status,
COUNT(t2.raisedon) AS cnt,
YEARWEEK(t1.raisedon) AS week
FROM
(
SELECT '2019-01-01' AS raisedon UNION ALL
SELECT '2019-01-02' UNION ALL
SELECT '2019-01-03' UNION ALL
...
SELECT '2019-01-31' UNION ALL
SELECT '2019-02-01' UNION ALL
...
SELECT '2019-03-31'
) t1
LEFT JOIN yourTable t2
ON t1.raisedon = t2.raisedon
WHERE
t1.raisedon >= '2019-01-01' AND t1.raisedon < '2019-03-29' AND
t2.status = 'Open' AND
t2.type = 'A' AND
t2.location = 'B' AND
t2.locationid = 'C'
GROUP BY
YEARWEEK(t1.raisedon);
请参阅此处 ,以了解生成日历表的几种方法,例如上面第二个查询中使用的方法。
一种方法使用datediff()
:
SELECT 'Closed' AS `Status`,
COUNT(*) AS `Count`,
MIN(raisedon) AS `Date`
FROM table
WHERE raisedon >= '2019-01-01' AND
raisedon < '2019-03-29' AND
status = 'Open' AND
type = 'A' AND
location = 'B' AND
locationid = 'C'
GROUP BY FLOOR(DATEDIFF('2019-01-01', raisedon) / 7);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.