我无法运行下面的代码来计算按日期分组的行数,因为它会为每天返回错误的计数
SELECT DATE(Date) as days
,coalesce(count(credits),0) as credits
from offer_process qa
left join ( SELECT DATE(NOW())-INTERVAL 30 DAY as day_series
from(SELECT 0 AS a
UNION ALL SELECT 1 UNION ALL SELECT 2
UNION ALL SELECT 3 UNION ALL SELECT 4
UNION ALL SELECT 5 UNION ALL SELECT 6
) as a
) as qb
on DATE(Date) = DATE(Date)
WHERE Date > DATE_SUB(curdate(), INTERVAL 7 day)
group by DATE(Date)
order by DATE(Date) asc;
例如,为每行返回1,它返回7,这不是真的
答案 0 :(得分:2)
试试这个 -
SELECT DATE(Date) as days
,coalesce(count(credits),0) as credits
from offer_process qa
left join (SELECT DATE(NOW())-INTERVAL 30 DAY as day_series) as qb
on DATE(qa.Date) = DATE(qb.day_series)
WHERE Date > DATE_SUB(curdate(), INTERVAL 7 day)
group by DATE(Date)
order by DATE(Date);
答案 1 :(得分:0)
这个怎么样?它将返回过去7天中每个选定ID的信用计数。
SELECT (DATE(NOW()) - INTERVAL `day` DAY) AS `DayDate`, COUNT(`credits`) AS `credits`
FROM (
SELECT 0 AS `day`
UNION SELECT 1
UNION SELECT 2
UNION SELECT 3
UNION SELECT 4
UNION SELECT 5
UNION SELECT 6
) AS `week`
LEFT JOIN `offer_process` ON DATE(`Date`) = (DATE(NOW()) - INTERVAL `day` DAY) AND `id` = 50
GROUP BY `DayDate`
ORDER BY `DayDate` ASC