我試圖找到一種方法來選擇表中每個用戶的最高值的行。除非我誤解,我不能簡單地通過每一行Oracle SQL select max「for each」row
例如組,說我有這樣一個當前查詢:
select u.userid, p.region, count(u.userid) count
from userTable u join purchasesTable p on u.userid = p.userid
group by (u.userid, p.region)
,並讓目前這樣的結果:
id Region COUNT
---------- ----------- ----------
1 East 1
2 West 1
3 North 1
1 North 2
2 East 3
3 West 4
我想篩選結果以顯示每個用戶購買量最高的地區(而不是總購買量最高的地區或用戶)。
id Region COUNT
---------- ----------- ----------
1 North 2
2 East 3
3 West 4
我不能讓group by子句只包含userid,因爲我想包含區域。但我不希望地區專欄被納入決策。我考慮將這個包裝在另一個查詢中,然後採用最大值,但是我沒有用這種方法取得任何成功。我也想過使用distinct關鍵字,但是這也不能解決這個問題。
如果有人能指引我正確的方向,我會非常感激。
如果有並列爲同一ID最高計數兩個區域?你是否需要返回所有這些行,或者只是其中一個 - 如果「只有一個」,哪一個?例如,假設對於一個新的id,比如'id = 4',最高的計數是4,並且對於East和North來說這個計數是相同的。輸出應該顯示爲'id = 4'? – mathguy