Ir para conteúdo

POWERED BY:

Arquivado

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

Piranha

contar os valores certos

Recommended Posts

SELECT r1 AS r1, r2 AS r2,r3 as r3,r4 as r4, r5 as r5, r6 as r6,

IF(r1=1 and r2=2 and r3=3 and r4=4 and r5=5 and r6=6, "acerto", "erro") AS acerto

FROM lfresultado;

 

r1 r2 r3 r4 r5 r6 acerto

2 3 5 6 9 10 erro

1 4 5 6 7 9 erro

1 4 6 7 8 9 erro

1 2 4 5 8 10 erro

1 2 4 8 9 11 erro

1 2 4 5 6 7 erro

 

 

Eu quero que a coluna acerto indique a quantidade de certos ( um número).

Alguem, poderia me ajudar nessa.

 

Antecipadamente agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguem por favor me ajude,

tem erro, preciso de ajuda, o count não esta somando os if.

 

Help, help, help, help, help, help, help

 

SELECT res, SUM(IF(r1=1,1,0)) AS r1,

SUM(IF(r2=4,1,0)) AS r2,SUM(IF(r3=5,1,0)) AS r3,

SUM(IF(r4=7,1,0)) AS r4,SUM(IF(r5=8,1,0)) AS r8,SUM(IF(r9=11,1,0)) AS r9,

SUM(IF(r10=16,1,0)) AS r10,SUM(IF(r11=19,1,0)) AS r11,SUM(IF(r12=21,1,0)) AS r12,

SUM(IF(r13=22,1,0)) AS r13,SUM(IF(r14=24,1,0)) AS r14, SUM(IF(r15=25,1,0)) AS r15,

COUNT(*) AS total

FROM lfresultado

GROUP BY res;

Compartilhar este post


Link para o post
Compartilhar em outros sites

count nao serve pra somar, count serve pra contar, sum q serv pra somar, soh q da pra ver q você nao esta sabendo usar a funçao, sum , count e outras , sao todas funçoes de agregaçao, e nao servem pra somar linearmente,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro colega

giesta,

Aqui vai as minhas desculpas a todos, vou tentar ser mais paciente...

Obrigado pela ajuda, mas ainda não funcionou, a coluna total que deveria acumular

a somatoria dos if, continua apresentando somente o valor 1 (todos).

A medida do possível, gostaria de contar com a vossa ajuda e dos demais colaboradores

desse importante forum I Master, aqui o aprendizado é completo.

 

Antecipadamente, muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

hummmm

veja se este bacalhau te ajuda (está sem alguns campos da sua consulta original):

 

SELECT SUM(IF(r1=1,1,0)) AS r1,

SUM(IF(r2=4,1,0)) AS r2,

SUM(IF(r3=5,1,0)) AS r3,

SUM(IF(r4=7,1,0)) AS r4,

SUM(IF(r5=8,1,0)) AS r5,

SUM(IF(r9=11,1,0)) AS r9,

SUM(IF(r10=16,1,0)) AS r10,

SUM(

IF(r1=1,1,0) + IF(r2=4,1,0) + IF(r3=5,1,0) +

IF(r4=7,1,0) + IF(r5=8,1,0) +

IF(r9=11,1,0) + IF(r10=16,1,0)

) AS total

FROM lfresultado

GROUP BY res

O somatório dos acertos foi feito com o SUM, e neste somatório foram incluídos os IF's para verificação de cada campo.

 

Talvez alguém tenha uma idéia melhor e mais 'limpa' que esta.

 

http://forum.imasters.com.br/public/style_emoticons/default/natal_noel.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

hummmm beleza!

mas agora que vi seu outro post, já estava respondido lá... :mellow:

que no lugar do count(*) as total talvez precisasse alterar para sum(r1+r2+r3....) as total.

Compartilhar este post


Link para o post
Compartilhar em outros sites

reduzindo a questão:

 

SELECT res,

SUM(

IF(r1=1,1,0)

+ IF(r2=3,1,0)

+ IF(r3=5,1,0)

+ IF(r4=7,1,0)

+ IF(r5=8,1,0)

+ IF(r6=11,1,0)

+ IF(r7=13,1,0)

+ IF(r8=14,1,0)

+ IF(r9=15,1,0)

+ IF(r10=16,1,0)

+ IF(r11=18,1,0)

+ IF(r12=20,1,0)

+ IF(r13=22,1,0)

+ IF(r14=23,1,0)

+ IF(r15=25,1,0)

 

) AS Total

FROM lfresultado

GROUP BY res;

 

 

Com a sua solução positiva (tomei a liberdade de reduzir), pois, tenho no momento interesse

na coluna res e na coluna Total.

Observei que na coluna Total tem valores de 5 a 15, eu te pergunto:

Como posso fazer para que eu obtenha na coluna Total somente resultados entre

11 e 15, é possível ?

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

esses 'valores' no qual você se referiu são as colunas: r5,etc?

bom se for isto, acho que pode simplesmente deixar assim:

SELECT res,

SUM(

IF(r11=18,1,0)

+ IF(r12=20,1,0)

+ IF(r13=22,1,0)

+ IF(r14=23,1,0)

+ IF(r15=25,1,0)

 

) AS Total

FROM lfresultado

GROUP BY res;

não estou certo se entendi a questão.

http://forum.imasters.com.br/public/style_emoticons/default/natal_smile.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT res,

SUM(r1=1) AS r1,

SUM(r2=3) AS r2,

SUM(r3=5) AS r3,

SUM(r4=7) AS r4,

SUM(r5=8) AS r5,

SUM(r6=11) AS r6,

SUM(r7=13) AS r7,

SUM(r8=14) AS r8,

SUM(r9=15) AS r9,

SUM(r10=16) AS r10,

SUM(r11=18) AS r11,

SUM(r12=20) AS r12,

SUM(r13=22) AS r13,

SUM(r14=23) AS r14,

SUM(r15=25) AS r15,

SUM(

IF(r1=1,1,0)

+ IF(r2=3,1,0)

+ IF(r3=5,1,0)

+ IF(r4=7,1,0)

+ IF(r5=8,1,0)

+ IF(r6=11,1,0)

+ IF(r7=13,1,0)

+ IF(r8=14,1,0)

+ IF(r9=15,1,0)

+ IF(r10=16,1,0)

+ IF(r11=18,1,0)

+ IF(r12=20,1,0)

+ IF(r13=22,1,0)

+ IF(r14=23,1,0)

+ IF(r15=25,1,0)

 

) AS Total

FROM lfresultado

GROUP BY res;

 

Acima esta completo e funcionando perfeitamente, como você me ensinou.

Eu tenho agora duas colunas, (res , Total ), a coluna Total apresenta valores de 5 até 15.

 

A pergunta é:

Eu gostaria que a coluna Total me apresentasse somente valores entre 11 e 15,

eu sei que é possível, mas como?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse 'valores' que ainda não entendi, você se refere aos campos r5,etc?

Se for:

SELECT res,

SUM(r1=1) AS r1,

SUM(r2=3) AS r2,

SUM(r3=5) AS r3,

SUM(r4=7) AS r4,

SUM(r5=8) AS r5,

SUM(r6=11) AS r6,

SUM(r7=13) AS r7,

SUM(r8=14) AS r8,

SUM(r9=15) AS r9,

SUM(r10=16) AS r10,

SUM(r11=18) AS r11,

SUM(r12=20) AS r12,

SUM(r13=22) AS r13,

SUM(r14=23) AS r14,

SUM(r15=25) AS r15,

SUM(

IF(r11=18,1,0)

+ IF(r12=20,1,0)

+ IF(r13=22,1,0)

+ IF(r14=23,1,0)

+ IF(r15=25,1,0)

 

) AS Total

FROM lfresultado

GROUP BY res;

se não for, dá uma explicada melhor no que seria estes 'valores'.

 

http://forum.imasters.com.br/public/style_emoticons/default/natal_smile.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

select a.* from

(

SELECT

res,

IF(r1=1,1,0) AS r1,

IF(r2=4,1,0) AS r2,

IF(r3=5,1,0) AS r3,

IF(r4=7,1,0) AS r4,

IF(r5=8,1,0) AS r8,

IF(r9=11,1,0) AS r9,

IF(r10=16,1,0) AS r10,

IF(r11=19,1,0) AS r11,

IF(r12=21,1,0) AS r12,

IF(r13=22,1,0) AS r13,

IF(r14=24,1,0) AS r14,

IF(r15=25,1,0) AS r15,

(

IF(r1=1,1,0) +

IF(r2=4,1,0) +

IF(r3=5,1,0) +

IF(r4=7,1,0) +

IF(r5=8,1,0) +

IF(r9=11,1,0) +

IF(r10=16,1,0) +

IF(r11=19,1,0) +

IF(r12=21,1,0) +

IF(r13=22,1,0) +

IF(r14=24,1,0) +

IF(r15=25,1,0)

) total

FROM lfresultado

)a

where a.total between 11 and 15

 

Aparentemente eh isso q você quer

E por favor pare de encher o forum com posts sobre a mesma coisa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço pela sua resposta, você me ajudou e eu sou grato, mas , isso não significa que eu tenha que

aguentar o seu mau humor, observando as suas respostas aqui no Imaster, você é um caro chato, estressado e metido a dono do mundo, ou pelo menos

dono do IMaster.

Cara com você o sem o mundo vai continuar o mesmo, seja mais humilde, e tenha respeito com as pessoas,

principalmente com as que você não conhece.

 

Fui.

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.