2017-06-11 49 views
2

我卡住了,我真的需要你的幫助。即時通訊使用postgres和我有一個內部連接SQL查詢,獲得成員分開的組數量。在postgres中獲取一個值或一個最大值和一個計數

結果是

antal  fornamn 
3   Anna 
2   Sara 
3   Lisa 
1   Peter 

我需要得到具有最高值的行也可以是一行或兩行,如果它具有相同的值。我試圖用最高,但它沒有工作像我想它我只有一個行和列,結果

antal 
3 

我不知道是把MAX。我想要的結果是在這種情況下

antal  fornamn 
3   Anna 
3   Lisa 

SQL查詢至今

SELECT COUNT(traningsgruppid) AS antal, medlem.fornamn 
FROM traningsgrupprad 
INNER JOIN medlem ON traningsgrupprad.medlemsid = medlem.medlemsid 
GROUP BY medlem.fornamn 

我試過,但它沒有工作

SELECT COUNT(traningsgruppid) AS antal, medlem.fornamn 
FROM traningsgrupprad 
INNER JOIN medlem ON traningsgrupprad.medlemsid = medlem.medlemsid 
WHERE antal = (SELECT MAX(antal) FROM traningsgrupprad) 
GROUP BY medlem.fornamn 

回答

0

您可以使用窗口/排序功能:

SELECT m.antal, m.fornamn 
FROM (SELECT COUNT(*) AS antal, m.fornamn, 
      RANK() OVER (ORDER BY COUNT(*) DESC) as seqnum 
     FROM traningsgrupprad t INNER JOIN 
      medlem m 
      ON t.medlemsid = m.medlemsid 
     GROUP BY m.fornamn 
    ) m 
WHERE seqnum = 1; 

I用COUNT(*)代替COUNT(traningsgruppid),因爲稱爲「id」的東西通常不是NULL,所以兩者是等價的(後者更易於輸入)。

+0

非常感謝你!有用。 – LundI

相關問題