【问题标题】:What's the best way to split my results by day?按天划分结果的最佳方法是什么?
【发布时间】:2021-02-08 10:46:20
【问题描述】:

不知道该去哪里。我知道我需要将日期和时间与“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') 和 创建于

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

【问题讨论】:

  • 能否请您发布查询的文本,而不是其照片
  • convert(date, createdon) = '20210109' 之类的东西(语法可能取决于您的 dbms(这就是您应该标记它的原因))

标签: sql datetime datepart


【解决方案1】:
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 

【讨论】:

    【解决方案2】:

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

    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 中。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 2013-03-17
      • 2010-09-11
      • 2017-12-01
      • 2023-03-03
      相关资源
      最近更新 更多