【问题标题】:SQL Server Grouping rows by datetime and get the total using countSQL Server 按日期时间分组行并使用计数获取总数
【发布时间】:2020-07-03 09:16:37
【问题描述】:

我有一个包含一些字段的表格,其中一个是日期时间类型:

Id  When                   typeOfAction 
1   01/02/2020 10:30:02    7
2   01/02/2020 10:30:02    7
3   01/02/2020 10:30:02    7
4   01/02/2020 12:15:00    7
5   01/02/2020 12:15:00    7
6   10/03/2020 17:00:45    7

我想获取具体一天的 typeOfAction=7 行数。具有相同日期和时间的行应计为 1 行。

例如,如果我想获取 01/02/2020 有多少行 typeOfAction=7,我希望获得 2 的计数,因为具有相同日期和时间的行 01/02/2020 10 :30:02 应计为 1,与 01/02/2020 10:30:02 相同。

【问题讨论】:

  • CONVERT(DATE, 'yourdatetimeHere') 剥离时间。

标签: sql sql-server select


【解决方案1】:

您可以提取日期并按其分组,然后计算每个日期的不同日期时间:

SELECT   CAST(when AS DATE), COUNT(DISTINCT when)
FROM     mytable
WHERE    typeOfAction = 7
GROUP BY CAST(when AS DATE)

【讨论】:

    【解决方案2】:

    你可以用这样的分析函数来做到这一点:

    select t.*, count(*) over (partition by typeOfAction, cast(when as date)) cnt from t
    

    日期时间的cast会去掉时间部分,以便找到当天的数据。

    【讨论】:

      猜你喜欢
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 2018-05-01
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多