2017-06-11 47 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

相关问题