Informix:计算具有特定值的记录数?

时间:2014-10-08 19:05:49

标签: sql informix

我有这些表:PARTIDO,SUBLEMA,LISTA,REGISTRO_DE_VOTOS。

使用此内连接语句:

SELECT partido.id_partido, sublema.id_sublema,lista.numero_lista
FROM partido INNER JOIN sublema ON 
     partido.id_partido=sublema.id_partido INNER JOIN 
     lista ON sublema.id_sublema=lista.id_sublema  INNER JOIN 
        registro_de_votos ON lista.numero_lista=registro_de_votos.numero_lista

我得到了以下结果:

id_partido  | id_sublema| numero_lista
--------------------------------------
2           | 2         | 222
1           | 1         | 111
1           | 1         | 111
2           | 2         | 222
2           | 2         | 222
1           | 1         | 111
2           | 2         | 222
2           | 2         | 222
1           | 1         | 111
2           | 2         | 222
3           | 3         | 333

有没有办法计算每个id_partido的记录?所以我可以这样得到somthig:

id_partido  | count
-------------------
1           | 4     
2           | 5     
3           | 1

列id_partido的值未知。可以任意数字。

1 个答案:

答案 0 :(得分:0)

是:

SELECT partido.id_partido, COUNT(sublema.id_sublema)
FROM partido INNER JOIN sublema ON 
 partido.id_partido=sublema.id_partido INNER JOIN 
 lista ON sublema.id_sublema=lista.id_sublema  INNER JOIN 
    registro_de_votos ON lista.numero_lista=registro_de_votos.numero_lista
GROUP BY partido.id_partido

GROUP BY子句捆绑所有具有相同id_partido的元素,然后COUNT()函数计算每个id_sublema的{​​{1}}

  

如果我使用" SELECT partido.id_partido,COUNT(sublema.id_sublema)作为cantidad ......"然后" ...... orti by cantidad DESC"我得到了一个在顶部有更多记录的人。我怎么才能得到第一个?

您可以使用id_partido

TOP 1