none
Count em 2 campos... RRS feed

  • Pergunta

  • Olá amigos,

     

    Tenho uma tabela de convidados com um flag informando se o convidado chegou ou não, queria fazer uma query e retornar 2 valores, o total de convidados e o total que já chegou, fiz algo parecido abaixo, que deu certo, queria saber se está certo ou se tem alguma query melhor:


     

    SELECT     COUNT(id_convidado) AS Total,
                              (SELECT     COUNT(id_convidado) AS Chegou
                                FROM          convidados
                                WHERE      chegou = '1') AS chegou
    FROM         convidados

    Resultado:

    Total                      Chegou

    1000                      49

    Obrigado!!

     

    sexta-feira, 27 de julho de 2007 19:53

Respostas

  • Tem uma maneira que será muito mais rapida.

     

    SELECT B.ROWCNT AS TOTAL,

    COUNT(ID_CONVIDADO) AS CHEGOU

    FROM CONVIDADOS

    INNER JOIN SYSINDEXES B

    ON OBJECT_ID('CONVIDADOS') = B.ID

    WHERE CHEGOU = '1'

    AND B.INDID < 2

    GROUP BY B.ROWCNT

     

    Você pode pegar a quantidade de registros da tabela Convidados na coluna RowCnt da tabela SysIndexes.

    segunda-feira, 30 de julho de 2007 14:34

Todas as Respostas

  • Ricardo,

     

    Está certíssimo....

     

    Se tratando de aplicar duas condições em um mesmo campo da tabela você tem que utilizar subqueries para resolver.

    E esta maneira que você fez é a que eu faria.

     

    []'s

     

    Rafael Krisller

     

    sexta-feira, 27 de julho de 2007 20:08
  • Ricardo,

     

    Está certíssimo....

     

    Se tratando de aplicar duas condições em um mesmo campo da tabela você tem que utilizar subqueries para resolver.

    E esta maneira que você fez é a que eu faria.

     

    []'s

     

    Rafael Krisller

     

    sexta-feira, 27 de julho de 2007 20:08
  • Ricardo,

     

    Está certíssimo....

     

    Se tratando de aplicar duas condições em um mesmo campo da tabela você tem que utilizar subqueries para resolver.

    E esta maneira que você fez é a que eu faria.

     

    []'s

     

    Rafael Krisller

     

    sexta-feira, 27 de julho de 2007 20:08
  • Tem uma maneira que será muito mais rapida.

     

    SELECT B.ROWCNT AS TOTAL,

    COUNT(ID_CONVIDADO) AS CHEGOU

    FROM CONVIDADOS

    INNER JOIN SYSINDEXES B

    ON OBJECT_ID('CONVIDADOS') = B.ID

    WHERE CHEGOU = '1'

    AND B.INDID < 2

    GROUP BY B.ROWCNT

     

    Você pode pegar a quantidade de registros da tabela Convidados na coluna RowCnt da tabela SysIndexes.

    segunda-feira, 30 de julho de 2007 14:34