【问题标题】:Count the number of records for each 1st of the month in SQL在 SQL 中计算每个月 1 日的记录数
【发布时间】:2021-08-04 23:04:09
【问题描述】:

我有一个数据集,我想在其中查询并获取每个月第一天的记录计数的输出。

数据

 name      date1
 hello     july 1 2018
 hello     july 1 2018
 hello     july 10 2018
 sure      august 1 2019
 sure      august 1 2019
 why       august 20 2019
 ok        september 1 2019
 ok        september 1 2019
 ok        september 1 2019
 sure      september 5 2019

希望

ID   MONTH       Day    YEAR
2    July        1      2018
2    August      1      2019
3   September    1      2019

我们只统计每个月 1 日的记录

正在做

USE [Data]
SELECT    COUNT(*) AS ID , MONTH(date1) AS MONTH, YEAR(date1) AS YEAR
FROM      dbo.data1
GROUP BY  MONTH(date1), YEAR(date1)
ORDER BY YEAR ASC

这只会输出年份和月份 任何建议表示赞赏

【问题讨论】:

  • 您需要显示一些示例起始数据,因为它不清楚问题所在。
  • 如果你想要一个计数,为什么你想要的结果没有某种计数列?
  • 计数在“ID”列下
  • 一个简单的方法是过滤DAY(date1) = 1(其他调整我留给你)。但这让我觉得这是一个非常奇怪的目标,我怀疑还有更多。

标签: sql sql-server tsql


【解决方案1】:

假设您正在使用日期的隐式转换

示例

SELECT  COUNT(*) AS ID, 
        DATENAME(MONTH,date1) AS MONTH, 
        DATEPART(DAY,date1) as DAY,
        YEAR(date1) AS YEAR
FROM    dbo.data1
WHERE  DAY(date1)=1
GROUP BY YEAR(date1),DATENAME(MONTH,date1),DATEPART(DAY,date1)
ORDER BY YEAR ASC

结果

ID  MONTH       DAY     YEAR
2   July        1       2018
2   August      1       2019
3   September   1       2019

【讨论】:

  • 感谢@john,这非常有效。我之前正在排除故障,但这是解决方案
  • @Lynn 总是乐于提供帮助
  • @Lynn DATE1 是否实际上存储为像“2018 年 7 月 1 日”这样的字符串?这是有风险的,因为很容易获得虚假数据。
  • @Lynn 不符合您的“数据”描述。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 2019-03-22
  • 2022-10-04
  • 1970-01-01
相关资源
最近更新 更多