0

报告请求的编写有问题,这反映了每天创建和更新的事件数量。

该表包括:

字段类型注释

id int (11) NOT NULL
name varchar (255) NULL
created_on datetime NOT NULL
updated_on datetime NOT NULL

创建日期和更新日期可能不一致。

要求:

SELECT 
    z.date_created, 
    SUM (IF (z.date_created = z.date_updated, 1, 0)) AS created, 
    SUM (IF (z.date_created! = Z.date_updated, 1, 0)) AS updated
FROM 
(
    SELECT 
        SUBSTRING (e.updated_on, 1, 10) AS date_updated, 
        SUBSTRING (e.created_on, 1, 10) AS date_created 
    FROM 
        event e
) z
GROUP BY 
    z.date_created

我需要以下结果: 在此处输入图像描述

没有给出想要的结果,因为没有显示所有日期。

4

2 回答 2

1

假设你想要

  • 查看所有日期;
  • 事实上计算create
  • update仅当它不是创建日期时才计算:

http://www.sqlfiddle.com/#!2/56254/39

SELECT A.*
,(SELECT count(created_on) 
    FROM event WHERE date=created_on) created
,(SELECT sum(created_on<>updated_on) 
    FROM event WHERE date=updated_on) updated
FROM (
SELECT created_on date FROM event
UNION SELECT updated_on FROM event ) A
于 2013-02-10T12:33:12.180 回答
0

要获取特定日期创建和更新的事件数,请执行以下操作。

select count(*) events
from event
where  
(created_on >= {d '2013-02-10'} and created_on < {d '2013-02-11'})
or
(updated_on >= {d '2013-02-10'} and updated_on < {d '2013-02-11'})

这种方法考虑了这些字段的时间部分。

于 2013-02-10T13:40:01.600 回答