Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

labanca

[Resolvido] Com fazer a função count retornar o zero?

Recommended Posts

To com seguinte problema:

 

Tenho que fazer uma consulta usando count. E preciso que os zeros sejam exibidos no resultado da query. Tipo agrupo por codigos e vejo sempre que aquele codigo aparece se, no mesmo registro dele, outro valor (por exemplo: "sim") aparece também.

 

por exemplo:

 

cod resposta

123 sim

123 sim

123 não

123 não

321 não

321 sim

456 não

456 não

456 não

 

 

Cod count

123 2

321 1

456 0 <= isso não acontece =(

 

 

Mas o count não retorna os zeros!!!

 

Não preciso de nada pra PHP ou qualquer outra coisa, é no mysql mesmo. Já procurei muito e não achei nada ainda na internet

 

Se alguém puder me ajudar fico MUITO grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da pra fazer isso de milhoes de jeitos, vou ensinar dois jeitos simples....

 

 

 

Jeito mais simples porem pode ser lento se a tabela for mto gigante

 

select cod , sum(resposta) from

(

SELECT cod as cod,

 

CASE resposta

WHEN 'Sim' THEN '1'

WHEN 'Nao' THEN '0'

END as resposta

 

FROM tabela

) as abc

 

Group by cod

 

 

 

 

 

Jeito 2 (mais complicadinho e mais rapido)

 

 

Select distinct tab1.cod as cod , if(tab2.qtde_resposta IS NULL, '0', tab2.qtde_resposta) as qtde_respostas_sim

from tabela as tab1

LEFT JOIN

(

select cod as cod, count(resposta) as qtde_resposta

from trabela

where resposta='Sim'

Group by cod

)

as tab2

ON tab1.cod=tab2.cod

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz assim:

 

SELECT codigo, sum(fg_utilizado) from

(

SELECT codigo as codigo,

 

CASE fg_utilizado

WHEN 'S' THEN '1'

WHEN 'N' THEN '0'

END as fg_utilizado

 

FROM tabela_x

) as abc

 

Group by codigo

 

fg_utilizado é no caso S ou N

 

Cada cidade podem usar varios numeros, dai eu vejo quantos numeros a cidade ja usou ou quantos ela ainda tem para usar, fazendo a conta dos fg_utilizados = S.

 

A mensagem de erro diz que nao pode passar esse tipo de argumento:

 

Msg 409, Level 16, State 2, Line 7

The sum or average aggregate operation cannot take a varchar data type as an argument.

Compartilhar este post


Link para o post
Compartilhar em outros sites

que erro ocorreu e como voce fez?

 

Editado: Desculpe a janela estava aberta e quando respondi voce ja havia postado o que perguntei

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim

 

SELECT codigo, sum(fg_utilizado) from

(

SELECT codigo as codigo,

if( fg_utilizado = 'S',1,0) as fg_utilizado

FROM tabela_x

) as abc

Group by codigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim

 

SELECT codigo, sum(fg_utilizado) from

(

SELECT codigo as codigo,

if( fg_utilizado = 'S',1,0) as fg_utilizado

FROM tabela_x

) as abc

Group by codigo

 

nem deu =(

 

Msg 156, Level 15, State 1, Line 4

Incorrect syntax near the keyword 'if'.

Msg 170, Level 15, State 1, Line 4

Line 4: Incorrect syntax near ','.

 

Eu precisava MUITO dessa funcao, porque eu preciso preencher 4 tipos de tabela diferente com aprox. 300 registros

e precisava alinhar depois essa consulta com o parametro padrao, cujo contem os nomes que com sql normal nao aparecem se nao contem fg_utilizados = 's'

 

=/

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT codigo, sum(fg_utilizado) from

(

SELECT codigo as codigo,

CASE fg_utilizado

WHEN 'S' THEN 1

WHEN 'N' THEN 0

END as fg_utilizado

FROM tabela_x

) as abc

Group by codigo

 

 

Teu mysql deve tah em GAY MODE pra reclamar tanto assim :P

alem disso a consulta do If tah certa... ve se você nao tah digitando coisa errada ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.