zandotc
-
Total de itens
9 -
Registro em
-
Última visita
Posts postados por zandotc
-
-
Bom Dia,
Tenho 10 colunas de Siglas de Defeito, e 10 Colunas de quantidade de cada defeito,
D1 = Defeito
Q1 = Quantidade de Defeitos D1
D2 = Defeito
Q2 = Quantidade de Defeitos D2
e assim por diante;
D1 pode conter as siglas C1, C2, C3, C4 até C40
D2 pode conter as siglas C1, C2, C3, C4 até C40
D3 pode conter as siglas C1, C2, C3, C4 até C40
e assim por diante
Vejam a imagem em anexo;
Preciso verificar as colunas e somar todos os defeitos de cada tipo, ranqueando as 3 maiores quantidades de defeitos, como na imagem anexo.
Podem me dar uma ajuda com isso.
Obrigado pela atenção;
-
Resolvido usando:
SELECT familia, SUM( CASE WHEN dataretorno ="0000-00-00 00:00:00" THEN 1 ELSE 0 END) AS producao, SUM( CASE WHEN dataretorno <>"0000-00-00 00:00:00" THEN 1 ELSE 0 END) AS pronto, SUM( CASE WHEN dataretorno IS NOT NULL THEN 1 ELSE 0 END) AS total FROM cadastro group by familia
-
Boa Tarde,
Tenho as seguintes queries:
//Pega o total de produtos da familia. Ex 25
$query ="SELECT *, COUNT(familia) as total from cadastro group by familia";
$executa=mysql_query($query);
$a=mysql_fetch_array($executa);//Pega o total de produtos já fabricados com base na data de retorno;
$queryb ="SELECT COUNT(familia) as pronto from cadastro where dataretorno<>'0000-00-00 00:00:00' group by familia";
$executab=mysql_query($queryb);
$b=mysql_fetch_array($executab);//Pega o total de produtos em produção com base na data de retorno.
$queryc ="SELECT COUNT(familia) as producao from cadastro where dataretorno='0000-00-00 00:00:00' group by familia";
$executac=mysql_query($queryc);
$c=mysql_fetch_array($executac);Problema está que ele retorna, apenas de uma família, pois não está em um while nem nada. Tentei usar um IF na consulta mas não obtive sucesso.
Exemplo de dados gravados:
familia dataretorno
C2-2018 0000-00-00 00:00:00
C2-2018 2018-02-02 00:00:00
C3-2018 2018-02-03 00:00:00
C4-2018 2018-02-05 00:00:00
C5-2018 2018-02-07 00:00:00
C5-2018 2018-02-07 00:00:00
C5-2018 0000-00-00 00:00:00
Saida MYSQL agrupando por família
familia dataretorno pronto producao total
C2-2018 0000-00-00 00:00:00 1 1 2
C3-2018 2018-02-03 00:00:00 1 0 1
C4-2018 2018-02-05 00:00:00 1 0 1
C5-2018 2018-02-07 00:00:00 2 1 3
Como poderia fazer isso usando apenas uma querie, tentei com sub selects também não consegui
Muito obrigado pela atenção e colaboração.
-
resolvido.
-
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.
- 0
-
Boa Tarde, gostaria de pegar o número da linha onde possui o valor que preciso.
SET @linha=0;
SELECT (@linha:=@linha + 1) AS numerolinha, fornecedor, total FROM controleconsertonumerolinha | fornecedor | total
1 fulano 320
2 ciclano 80
3 boltrano 80
...
20 cara 70Essa query funciona certinho porém lista todos os registro.
Eu precisaria que ela listasse apenas o registro que tivesse como fornecedor o nome... exemplo:
SET @linha=0;
SELECT (@linha:=@linha + 1) AS numerolinha, fornecedor, total FROM controleconserto WHERE fornecedor='cara'porém ele retorna como a linha 1 e não como a 20
numerolinha | fornecedor | total
1 cara 70
Agradeço a colaboração.
-
Resolvido.
-
Bom Dia
Estou a uns dias tentando achar uma solução para isto.
Preciso que dentro do meu for regressivo conte $n = $n -1, porém quando chegar no 0 ele comece a contar positivos e não negativos. vejam:
$mes=8;
for ($i=12; $i>0;$i--){$mes=$mes-1;echo $mes;}Saída: Mês = 8 7 6 5 4 3 2 1 0 -1 -2 -3gostaria que fosse sem o 0 e sem os negativos:Saída: Mês = 8 7 6 5 4 3 2 1 2 3 4 5Agradeço a colaboração.
Verificar Colunas e Somar com valores de outra
em MySQL
Postado
Obrigado pela resposta.
Refiz a estrutura do banco, gravando diretamente os valores em cada coluna.