Ir para conteúdo

POWERED BY:

Arquivado

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

Elizandro Tavares

Mysql - Query 10 Colunas - Contar - Somar e MAX

Recommended Posts

Boa Tarde,

Vou tentar explicar de forma clara, caso não consigam entender por favor perguntem.

Tenho uma cabela chamada "controleconserto" dentro da tabela tenho 10 colunas nomeadas motivo1 motivo2 motivo3 motivo4 motivo5 motivo6 motivo7 motivo8 motivo9 motivo10. Cada coluna dessa guarda uma valor por linha do tipo C1 C2 C3 C14 C12, etc.

exemplo tabela controleconserto

|-------------------------------------------------------------------------------------------------------------------------|

|cliente | motivo1 | motivo2 | motivo3 | motivo4 | motivo5 | motivo6 | motivo7 | motivo8 | motivo9 |

| 1 | c1 | c4 | c12 | c1 | c13 | c6 | c11 | c1 | c16 |

| 1 | c16 | c16 | c1 | c8 | c2 | c5 | c10 | c2 | c3 |

| 1 | c16 | c12 | c2 | c7 | c7 | c5 | c16 | c3 | c4 |

|-------------------------------------------------------------------------------------------------------------------------|

Eu precisaria que a query pegasse tudo que é c1 e desse um count(motivo1), count(motivo2) count(motivo3) etc. Ai ela pegaria tudo que tem nas colunas com o valor de C1 where cliente =1

Depois de contar quandos C1 tem nas colunas ele teria que somar os count SUM(count(motivo1)+count(motivo2)+count(motivo3) etc.

Depois dela somar, teríamos o Resultado da soma de C1, claro isso faria com todas as colunas e daria os resultados.

Exemplo:

SELECT COUNT(motivo1) as Total, motivo1 as 'Motivo 1' FROM controleconserto WHERE cliente=1 GROUP BY motivo1

3 C1

1 C12

4 C16

1 C6

3 C7

2 C8

SELECT MAX(Total) FROM (select COUNT(motivo1) as Total, motivo1 as 'Motivo 1' FROM controleconserto WHERE cliente=1 GROUP BY motivo1)as maximo

MAX(Total)

4

Ai eu teria o valor 4 que seria do C16

Assim precisaria que acontecesse com todas as colunas e no final juntar os valores iguais de cada coluna e somar dando o MAX

Aguardo.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vale a obs do @Willins Duarte, mas

1) Unpivot da tabela

select cliente,motivo1 motivo
from controleconserto
union all
select cliente,motivo2 motivo
from controleconserto
union all
...
select cliente,motivo9motivo
from controleconserto 

2) Usar esta SQL como tabela

select motivo, count(*) qtd
from
(
select cliente,motivo1 motivo
from controleconserto
union all
select cliente,motivo2 motivo
from controleconserto
union all
...
select cliente,motivo9motivo
from controleconserto 
) virtual
group by motivo

Creio ser isto

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.