2017-04-14 104 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」並不重要。如果有關係,它只會返回最高的所有星期幾。 –