Piranha 0 Denunciar post Postado Dezembro 11, 2008 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
Piranha 0 Denunciar post Postado Dezembro 11, 2008 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
giesta 29 Denunciar post Postado Dezembro 12, 2008 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
Piranha 0 Denunciar post Postado Dezembro 13, 2008 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
cassitos 2 Denunciar post Postado Dezembro 13, 2008 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
Piranha 0 Denunciar post Postado Dezembro 13, 2008 Cara, você é um gênio .... é funcionou ajudou pra caramba, estou super contente . abraços Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Dezembro 13, 2008 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
cassitos 2 Denunciar post Postado Dezembro 13, 2008 beleza! mas... agora que vi seu outro tópico, e já tinha uma solução lá (a última do giesta). :mellow: só que no lugar do count(*) as total, talvez precisasse alterar para sum(r1+r2+r3...) as total. http://forum.imasters.com.br/public/style_emoticons/default/natal_laugh.gif Compartilhar este post Link para o post Compartilhar em outros sites
Piranha 0 Denunciar post Postado Dezembro 13, 2008 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
cassitos 2 Denunciar post Postado Dezembro 13, 2008 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
Piranha 0 Denunciar post Postado Dezembro 13, 2008 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
cassitos 2 Denunciar post Postado Dezembro 13, 2008 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
giesta 29 Denunciar post Postado Dezembro 14, 2008 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
Piranha 0 Denunciar post Postado Dezembro 14, 2008 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