2014-07-17 58 views
1

假設我有一張表,顯示了個人在24小時內消耗的水果類型,如下所示:
在MS Access中使用SQL返回組中最頻繁的值和計數

Name  Fruit 
Tim  Apple 
Tim  Orange 
Tim  Orange 
Tim  Orange 
Lisa  Peach 
Lisa  Apple 
Lisa  Peach 
Eric  Plum 
Eric  Orange 
Eric  Plum 

我該如何得到一張只顯示每個人消費最多的水果以及消耗的水果數量的表格。換句話說,看起來像這樣的表:

Name  Fruit  Number 
Tim  Orange   3 
Lisa  Peach   2 
Eric  Plum   2 

我試圖

SELECT Name, Fruit, Count(Fruit) 
FROM table 
GROUP BY Name 

但由於名稱必須在GROUP BY語句以及返回一個錯誤。我試過的其他方法都會返回所有值的計數,而不僅僅是最大值。 MAX(COUNT())似乎不是一個有效的語句,所以我不確定還有什麼要做。

回答

1

這是一種痛苦,但你可以做到。先從你的查詢,然後使用join

SELECT n.Name, n.Fruit 
FROM (SELECT Name, Fruit, Count(Fruit) as cnt 
     FROM table as t 
     GROUP BY Name, Fruit 
    ) as t INNER JOIN 
    (SELECT Name, max(cnt) as maxcnt 
     FROM (SELECT Name, Fruit, Count(Fruit) as cnt 
      FROM table 
      GROUP BY Name, Fruit 
      ) as t 
     GROUP BY Name 
    ) as n 
    ON t.name = n.name and t.cnt = n.maxcnt; 
+0

我只是嘗試這樣做,但MS的訪問給我消息「FROM子句語法錯誤」。 – user3642531

+0

剛試過編輯,現在我得到了一個「由查詢定義的SELECT列表中的別名'cnt'導致的循環引用。」 – user3642531

+0

我再次嘗試這個,它給了我一些關於名稱可能引用多個表的錯誤,所以我添加了n.Name和n.maxcnt到第一個SELECT語句,它工作。謝謝您的幫助。 – user3642531

相關問題