SQL计数5天的行数并添加到count_concat

时间:2014-06-16 14:29:12

标签: mysql

我有一个表,每次通过我的应用程序发送电子邮件时都会存储记录,现在我正在尝试使用highcharts为应用程序开发统计页面。我正在尝试tbl_template_log计算过去5天的条目数,并将这些值添加到group_concat中,以便我可以将结果提供给图表。

我的查询:

SELECT group_concat(count(tbl_template_log.templog_id)) as 'stats_data' FROM tbl_template_log
              WHERE DATE(tbl_template_log.send_date) < DATE(NOW())
              AND DATE(tbl_template_log.send_date) > DATE(NOW()) - INTERVAL 6 DAY

我收到SQL错误:

1111 - Invalid use of group function 

我认为这是指group_concat()和count()的组合 有没有办法构建一个查询,它将同时计算每天的行数并将这些值添加到group_concat ....或者可能以其他方式执行此操作...?

2 个答案:

答案 0 :(得分:1)

如果您尝试tbl_template_log计算过去5天的条目数,那么为什么不使用group by使用如下所示。如果您将日期信息保存为日期时间,请使用date(tbl_template_log.send_date) as send_date,最后使用group by send_date

SELECT 
tbl_template_log.send_date,
count(tbl_template_log.templog_id) as `stats_data` 
FROM tbl_template_log
WHERE 
DATE(tbl_template_log.send_date) < DATE(NOW())
AND 
DATE(tbl_template_log.send_date) > DATE(NOW()) - INTERVAL 6 DAY
group by tbl_template_log.send_date

答案 1 :(得分:0)

试试!

我认为你需要这个:

SELECT 
GROUP_CONCAT
(tbl_template_log.templog_id) AS stats_data 
FROM 
(
SELECT COUNT(stats_data)
FROM tbl_template_log
WHERE DATE(tbl_template_log.send_date) < DATE(NOW())
AND DATE(tbl_template_log.send_date) > DATE(NOW()) - INTERVAL 6 DAY
)test