Mysql返回计数最近7天

时间:2017-09-11 20:49:17

标签: mysql database

我无法运行下面的代码来计算按日期分组的行数,因为它会为每天返回错误的计数

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,这不是真的

2 个答案:

答案 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

以下是一个示例:http://sqlfiddle.com/#!9/3a6592/1