Ms-Access

訪問中某些計數相等時返回 1 個最大值

  • November 2, 2016

我正在建構一個數據庫,該數據庫需要返回 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。

引用自:https://dba.stackexchange.com/questions/154028