Ms-Access
訪問中某些計數相等時返回 1 個最大值
我正在建構一個數據庫,該數據庫需要返回 Access 中逐月和逐年比較的峰值流量數據。我們正在嘗試確定每個月最繁忙的星期一、星期二、星期三等等。日期需要附加到返回值。它應該看起來像這樣。
Sep Date DOW Data 9/12 Mon 995 9/13 Tue 982 9/14 Wed 986 9/1 Thu 1004 9/2 Fri 1008 9/17 Sat 750 9/18 Sun 954
我正在嘗試執行一個 SQL 查詢,該查詢計算一天的所有單個記錄,按星期幾排序,找到最大值,然後返回該值。但是,我們遇到了兩個主要問題。通過執行此查詢,我可以使它看起來像上面的表格,而沒有附加日期。
SELECT DOW, MAX(Counts) AS Max FROM ( SELECT DOW, Start, Count(*) AS Counts FROM Outbound GROUP BY DOW, START ) GROUP BY DOW;
*“DOW”是表示日期的數字值(1=星期一等),“Start”是實際日期。
它返回下表。
DOW Max 1 995 2 982 3 986 4 1004 5 1009 6 750 7 954
這有我需要的一切,除了那個日期。但是,“最大”值不是唯一的,因此我無法將其關聯回較早的表以獲取與此計數相關聯的日期,因為可能有幾個具有相同的值。我也不能使用 DISTINCT,因為每條記錄的“開始”值都不同。如果有多個具有最大值的日期,我們只需要返回一個,因為這更多用於MOM和YOY比較,因此月間比較並不重要。
總而言之,我們要麼得到正確的數據,但沒有日期,要麼得到日期,但數據太多。
有任何想法嗎?
當您將此結果集(作為子查詢?)加入主表時,為什麼不做另一個 GROUP BY 並獲得 MAX(Start)?
Select MaxCount.DOW As DayNumberOfWeek, Max(Date) As LatestDate, MaxCount.Max From ( SELECT DOW, MAX(Counts) AS Max FROM ( SELECT DOW, Start, Count(*) AS Counts FROM Outbound GROUP BY DOW, Start ) GROUP BY DOW ) As MaxCount Inner Join ( SELECT DOW, Start, Count(*) As Counts FROM Outbound GROUP BY DOW, Start ) As DailyCount On MaxCount.DOW = DailyCount.DOW And MaxCount.Max = DailyCount.Counts Group By MaxCount.DOW, MaxCount.Max;
抱歉,如果我犯了一些語法錯誤,我現在沒有方便的 Access。