【问题标题】:Fetch records week wise for last one year in MS SQL在 MS SQL 中按周获取过去一年的记录
【发布时间】:2017-03-13 15:07:10
【问题描述】:

我有用户数据表。列是用户名,日期时间。
我需要从当前日期开始每周获取最近一年数据的用户数。
我编写查询以按天获取过去一年的记录,但我找不到按周检索数据的方法。
以下是按天获取数据的查询。

select count(Username) 
from tablename
where (Datetime > DATEADD(year,-1,GETDATE()) and Datetime< GETDATE()-1)
group by Datetime
order by Datetime asc    

谁能帮我在 sql server 中获取相同的每周计数?

【问题讨论】:

  • @GurV sql server

标签: sql sql-server


【解决方案1】:

试试这个:你必须按week分组,这样你就可以通过以下方式完成:

SELECT COUNT(Username) 
from tablename
where (Datetime > DATEADD(year,-1,GETDATE()) and DATETIME < GETDATE()-1)
group by DATEPART(wk,[DATETIME])
order by [Datetime] ASC

注意:请尽量避免reserved words作为列名,您可以将现有的包含在[]中。

【讨论】:

    【解决方案2】:

    使用 DATEPART IN GROUP BY 子句。在 where 条件中首先过滤一年的记录,然后根据 DATEPART 函数分组以获取每周计数

    SELECT COUNT(Username) , DATEPART(WEEK,Datetime) 
    FROM tablename
    WHERE DATEDIFF(YEAR,Datetime,GETDATE()) <= 0 AND     
    DATEDIFF(YEAR,Datetime,DATEADD(YEAR,-1,GETDATE())) >= 0
    GROUP BY DATEPART(WEEK,Datetime) 
    

    【讨论】:

    • @Sulthan Allaudeen,在 where 条件下,首先过滤一年的记录,然后根据 DATEPART 函数进行分组以获得每周计数。
    • 谢谢,请更新答案中的解释。因此,它对未来的读者有用\
    • @Sulthan Allaudeen,答案中添加了解释
    • 辛苦了,感激不尽
    【解决方案3】:

    您可以如下更改 group by 和 order by 子句。

    group by datepart(week,Datetime)
    order by datepart(week,Datetime) asc 
    

    【讨论】:

      【解决方案4】:

      首先,您需要指定额外的列,指出它是一年中的哪一周。 您可以像这样创建它(我假设您有更多年份的数据,我们将我们的专栏称为Date):

      CASE WHEN Date BETWEEN '2017-01-01 00:00:00.000' AND '2018-01-01 00:00:00.000'
          THEN floor(cast(datediff(dd, '2017-01-01 00:00:00.000',Date) as real) / 7)
          END AS [Week]
      

      其次,您必须运行查询:

      SELECT COUNT(Username) FROM tablename
      GROUP BY [Week]
      

      【讨论】:

        【解决方案5】:
        SELECT *, WEEK(created_on) week
        FROM Table_Name
        WHERE created_on > DATEADD(year,-1,GETDATE())
        ORDER BY week
        

        【讨论】:

          猜你喜欢
          • 2018-02-08
          • 1970-01-01
          • 2014-10-31
          • 1970-01-01
          • 2015-08-24
          • 2020-05-09
          • 1970-01-01
          • 2010-09-07
          相关资源
          最近更新 更多