2017-07-20 51 views
0

我試圖編寫一個SQL查詢來獲取每個用戶與之交互最多的合作伙伴公司。與合作伙伴公司的每次互動都有一排。 WHERE子句拋出一個錯誤。查詢獲取每個用戶記錄最多的合作伙伴

SELECT user_id, partner_id, COUNT(partner_id) 
FROM users 
WHERE COUNT(partner_id) = MAX(COUNT(partner_id)) 
GROUP BY user_id, partner_id; 

有沒有辦法讓計數成爲用戶的最大計數?沒有WHERE查詢運行,但是我得到了與每個用戶交互的所有合作伙伴的列表以及用戶與每個合作伙伴進行交互的次數。

+3

你使用什麼數據庫? – dasblinkenlight

+0

你可以發佈錯誤,請按 – Yoav24

+1

排序,並選擇只有前1行。或者在選擇內部結果的最大值的地方使用外部查詢。 – ADyson

回答

0

該值在統計中稱爲「模式」。你可以很容易地計算出它使用ROW_NUMBER()

SELECT user_id, partner_id, cnt 
FROM (SELECT user_id, partner_id, COUNT(*) as cnt 
      ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY COUNT(*) DESC) as seqnum 
     FROM users 
     GROUP BY user_id, partner_id 
    ) u 
WHERE seqnum = 1;