在列中显示值的最小数目

时间:2018-06-21 17:46:59

标签: sql db2

我使用了一条select语句来获取俱乐部名单的数量:

SELECT club,COUNT(club) as mycount FROM member GROUP BY club


   CLUB            COUNT      
--------------- -----------

UCLA  Club                 5
George Club                11

我需要显示计数表的最小数量:

    CLUB            COUNT
--------------- -----------
UCLA Club                  5

我使用了此语句,但它只显示了最小数目,因为我需要表格看起来像上面的那一列一样。如何获得俱乐部名称:

选择MIN(mycount)作为COUNT FROM(选择俱乐部,按俱乐部的COUNT(club)mycount FROM成员组)

我尝试做:

SELECT俱乐部,MIN(mycount)为Count FROM(SELECT俱乐部,COUNT(club)mycount FROM yrb_member group by俱乐部)

但是当我在选择之后放俱乐部时,这给了我一个错误

2 个答案:

答案 0 :(得分:1)

使用order byfetch first

SELECT club, COUNT(club) as mycount
FROM member
GROUP BY club
ORDER BY COUNT(club)
FETCH FIRST 1 ROWS WITH TIES;

注意:有关系时,此返回多行。

编辑:

如果您需要处理领带,请使用RANK()

SELECT club, mycount
FROM (SELECT club, COUNT(club) as mycount,
             RANK() OVER (ORDER BY COUNT(club) DESC) as seqnum
      FROM member
      GROUP BY club
     ) m
WHERE seqnum = 1;

答案 1 :(得分:1)

我的回答更长了一点,但让我难以置信。

SELECT cl.club, cnt.mincnt FROM
    (SELECT club, COUNT(*) cnt FROM member GROUP BY club) cl,
    (SELECT MIN(cnt) mincnt FROM (SELECT club, COUNT(*) cnt FROM member GROUP BY club)) cnt
WHERE cl.cnt = cnt.mincnt;