2017-04-14 49 views
0

我想查询大多数订单发生的一周中的哪一天。我写了一个返回结果的查询。但是,我认为,结果是,一周中的某一天可能基于大部分订单,但每一个订单都有一天,所以有几十个。我想知道如何才能返回有一天。SQL - 最常见的星期查询

表是:

Orders 
OrderID 
OrderDate 

SELECT MAX(DAYNAME(OrderDate)) as WeekDay 
FROM Orders O 
GROUP BY OrderDate 
OrDER BY WeekDay DESC; 
+0

您使用的数据库系统是什么?答案非常依赖于此。 – SandPiper

回答

2

你试图写该查询:

SELECT TOP (1) DAYNAME(OrderDate) as WeekDay, COUNT(*) 
FROM Orders O 
GROUP BY DAYNAME(OrderDate) 
OrDER BY COUNT(*) DESC; 

虽然此查询似乎回答你的问题,你必须非常小心。毕竟,如果Orders只有一天的数据,那么一周中的那一天将占主导地位。我的建议是从特定的几周内获取数据,最好是没有节假日的情况下获取这些信息。

你的问题没有指定数据库(虽然我可以猜到)。具体的日期/时间逻辑取决于数据库。

+0

我很欣赏评论,但我在执行此操作时遇到问题。它表示'WITH'在这一点上是无效的。我没有使用'WITH',而且我不熟悉它的语法。你能澄清它在做什么吗? – Babeeshka

+0

我不能给你的功能发表评论,但我用你的想法尝试另一种方法: 'SELECT MAX(DAYNAME(订购日期))为工作日,COUNT(*)” FROM级O GROUP BY DAYNAME(订购日期) ORDER BY WeekDay DESC; SELECT MAX(DAYNAME(订购日期))为工作日,COUNT(*) 从接单 GROUP BY DAYNAME(订购日期) ORDER BY COUNT(*)DESC LIMIT 1;' 这并返回星期的日子计数和第二个查询返回了大多数订单的最佳日期,但星期二和星期四的金额都是相同的。 (抱歉,在此格式化代码时出现问题) – Babeeshka

+0

“WITH TIES”并不重要。如果有关系,它只会返回最高的所有星期几。 –