【问题标题】:Create a report show specific stats for each day between a start and end date创建报告显示开始日期和结束日期之间每一天的特定统计信息
【发布时间】:2011-07-25 21:30:09
【问题描述】:

我有一个表格,其中包含我想显示特定日期范围内每一天的统计信息的信息。该表由以下内容组成:

CREATE TABLE IF NOT EXISTS `questions` (
  `qid` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `question_created_date` datetime NOT NULL,
  `question_response_date` datetime NOT NULL,
)

我可以使用以下查询来显示 $start_date 和 $end_date 之间每天创建的问题数量。

SELECT COUNT(*) as q_count, DATE(question_created_date) as date FROM questions where question_created_date between "$start_date" and "$end_date" GROUP BY date ORDER BY date asc

我还希望它列出在同一天回复的主题数量。例如,如果在 2011 年 7 月 5 日有 10 个新问题和 5 个问题得到答复,而在 2011 年 7 月 6 日有 5 个新问题和 11 个问题得到答复,我希望能够显示:

Date|New|Responded

7/5/11 10 05
7/6/11 05 11

这可以通过mysql完成吗?

我知道我可以执行上面列出的查询,然后每天执行另一个查询以获取当天回复的问题数量,但我想知道是否有一种更简单、更有效的方法可以一次性完成查询。

提前致谢。

【问题讨论】:

  • 如何存储问题响应?我们如何知道一天中有多少新问题和已回答的问题?问题和回答是否在同一张表中?每个响应是否有一行?如果是这样,你怎么知道这是一个响应而不是一个新问题,因为这两个日期都不能为空?

标签: php mysql


【解决方案1】:

这两个日期彼此不相关,但从逻辑上讲,响应日期只能大于创建日期。在一个日期分组将破坏您可以从另一个日期提取的任何信息,因此换句话说 - 您将需要两个查询。

返回的字段将是相同的 - 计数和日期字段,因此您可以将其作为单个查询调用发出,但必须作为联合查询来完成:

SELECT 'created' as src, count(*) as cnt, DATE(question_created_date) as created ...

UNION

SELECT 'answered' as src, count(*) as cnt, etc...

虚拟“src”列将告诉您哪个内部查询产生了结果,联合语法让您可以将这一切作为单个查询发出。但是在 MySQL 中,它仍然会被视为两个完全独立的查询,它们的结果会同时返回。

【讨论】:

  • 谢谢。这正是我所需要的。
【解决方案2】:

您可以使用 UNION 执行类似的操作。 MySQL 可能有一个更高效的内置运算符,但这也可以:

select main.date, max(qcd), max(qrd) from 
(SELECT DATE(question_created_date) as date, count(*) as qcd, 0 as qrd FROM questions  
    where question_created_date between "$startdate" and "$enddate" GROUP BY date
union
SELECT DATE(question_response_date) as date, 0, count(*) as qrd FROM questions 
    where question_response_date between "$startdate" and "$enddate" GROUP BY date) 
main group by main.date order by main.date asc;

【讨论】:

    猜你喜欢
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多