按天拆分结果的最佳方法是什么?

问题描述

不知道用这个去哪里。我知道我需要将日期和时间与“createdon”分开,但后来我被难住了。

我可以通过查询带回值,但我必须每天手动输入。

`SELECT 
sum(CASE WHEN title LIKE '%Environmental%' THEN 1 ELSE 0 END)As Environmental,sum(CASE WHEN title LIKE '%Let%' THEN 1 ELSE 0 END)As Let,sum(CASE WHEN title LIKE '%Lease%' THEN 1 ELSE 0 END)As Lease,sum(CASE WHEN title LIKE '%Pay%' THEN 1 ELSE 0 END)As Paym,sum(CASE WHEN title LIKE '%Manage%' THEN 1 ELSE 0 END)As Manage,sum(CASE WHEN title LIKE '%rent%' THEN 1 ELSE 0 END)As Rent,sum(CASE WHEN title LIKE '%Works%' THEN 1 ELSE 0 END)As Works

来自 事件 在哪里 (createdon > ('01/09/2021 00:01') 和 createdon

理想情况下,这就是我想要带回来的

DesiredResults

解决方法

SELECT 
  sum(CASE WHEN title LIKE '%Environmental%' THEN 1 ELSE 0 END)As Environmental,sum(CASE WHEN title LIKE '%Let%' THEN 1 ELSE 0 END)As Let,sum(CASE WHEN title LIKE '%Lease%' THEN 1 ELSE 0 END)As Lease,sum(CASE WHEN title LIKE '%Pay%' THEN 1 ELSE 0 END)As Paym,sum(CASE WHEN title LIKE '%Manage%' THEN 1 ELSE 0 END)As Manage,sum(CASE WHEN title LIKE '%Rent%' THEN 1 ELSE 0 END)As Rent,sum(CASE WHEN title LIKE '%Works%' THEN 1 ELSE 0 END)As Works,createdon 
 FROM incident WHERE createdon between <your_start_date> and <your_end_date>
   GROUP BY createdon 
,

您需要按日期聚合。一种方法如下所示:

SELECT CAST(createdon as DATE),SUM(CASE WHEN title LIKE '%Environmental%' THEN 1 ELSE 0 END)As Environmental,SUM(CASE WHEN title LIKE '%Let%' THEN 1 ELSE 0 END) As Let,SUM(CASE WHEN title LIKE '%Lease%' THEN 1 ELSE 0 END) As Lease,SUM(CASE WHEN title LIKE '%Pay%' THEN 1 ELSE 0 END) As Paym,SUM(CASE WHEN title LIKE '%Manage%' THEN 1 ELSE 0 END) As Manage,SUM(CASE WHEN title LIKE '%Rent%' THEN 1 ELSE 0 END) As Rent,SUM(CASE WHEN title LIKE '%Works%' THEN 1 ELSE 0 END)A s Works,FROM incident 
GROUP BY CAST(createdon as DATE)
ORDER BY CAST(createdon as DATE);

问题是众所周知的日期/时间函数依赖于数据库。以下是一些语法:

  • CAST(createdon as DATE) 应该可以在 SQL Server、MySQL 和 Postgres 中使用。
  • TRUNC(createdon) 在 Oracle 工作。
  • DATE() 在 SQLite 中。