首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前7天的MSSQL订单

前7天的MSSQL订单
EN

Stack Overflow用户
提问于 2015-09-11 22:31:22
回答 3查看 268关注 0票数 2

我在MSSQL中运行这个查询以获取条目,并按一周的最后7天分组:

代码语言:javascript
复制
SELECT COUNT(Date_Entered), DATENAME(WEEKDAY, Date_Entered)  
    FROM my_table
    WHERE Board_Name = 'Board'
      AND DATEDIFF(DAY,Date_Entered,GETDATE()) <= 7
  GROUP BY DATENAME(WEEKDAY, Date_Entered)

在结果中,一周中的天数按字母顺序排列:星期五>星期一>星期六>星期日>星期四>星期二>星期三。

我如何按照正常的/正确的/常识的顺序排序,从7天前的工作日开始到昨天结束?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-11 22:51:55

MAX(Date_Entered)的订购也应该是有效的:

代码语言:javascript
复制
SELECT 
    COUNT(Date_Entered), 
    DATENAME(WEEKDAY, Date_Entered)  
FROM my_table
WHERE Board_Name = 'Board' AND DATEDIFF(DAY,Date_Entered,GETDATE()) <= 7
GROUP BY DATENAME(WEEKDAY, Date_Entered)
ORDER BY MAX(Date_Entered);

通常,您希望按日期升序,但由于使用了聚合函数,因此需要按破坏日期对其进行分组,但由于每个组中的最大值(日期)是您可以执行max( date )命令的日期。

票数 1
EN

Stack Overflow用户

发布于 2015-09-11 22:49:06

DATEPART是你的朋友,你可以这样做:

代码语言:javascript
复制
SELECT COUNT(Date_Entered), DATENAME(WEEKDAY, Date_Entered),DATEPART(WEEKDAY,Date_Entered)  
    FROM my_table
    WHERE Board_Name = 'Board'
      AND DATEDIFF(DAY,Date_Entered,GETDATE()) <= 7
  GROUP BY DATEPART(WEEKDAY,Date_Entered),DATENAME(WEEKDAY, Date_Entered)
ORDER BY DATEPART(WEEKDAY,Date_Entered)
票数 1
EN

Stack Overflow用户

发布于 2015-09-11 23:04:38

如果不能指望每周都有可用的数据,那么就需要根据日期计算来做更多的事情。从我头上看,我认为这会更可靠:

代码语言:javascript
复制
ORDER BY (DATEDIFF(dd, MAX(Date_Entered), CURRENT_TIMESTAMP) + 77777) % 7

编辑:我写到,没有意识到数据已经被限制在一个星期之内。我想我的意图是在一周中的一天里把它们放在一个更长的时间范围内。

我还要指出,对我来说,在cast(Date_Entered as date)上进行分组比对字符串值进行分组更自然,如果这是一个更高效的查询,我也不会感到惊讶。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32533044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档