Jump to content

Como agrupar valores por período em uma Consulta SQL?


Waletrick
Ir para a Solução Solucionado por Tiago Neves,

Postagens Recomendadas

Estou com uma dúvida.

Criei uma variável que soma a quantidade de OS por numero de bem e agrupa por período conforme código abaixo.

 

SELECT *, 

    NR_UNVL_BEM, 

    SUM(qt_trst) AS tot_trst 

FROM 

    terminais.tb_trml_dspb 

WHERE 

    periodo = '202401' 

GROUP BY 

    NR_UNVL_BEM, 

    periodo; 

Contudo, quero que ao subir para o banco de dados, gostaria que a soma também fosse agrupada pelo período. Ao subir os arquivos de outros meses ele esta separando a quantidade por periodo. Exemplo:
BEM 12345
202401: 150 ordens de serviço, 
202402: 100 ordens de serviço.

quero que apareça da seguinte forma: BEM 12345 - 250 ordens de serviço.
É possível?

  • Curtir 1
Link to comment
Compartilhe em outros sites

  • Solução

Fala, @Waletrick!

Sim, testa isso aqui:
 

SELECT
  tb_trml_dspb.*,
  (
    SELECT SUM(qt_trst)
    FROM terminais.tb_trml_dspb AS tb2
    WHERE tb2.NR_UNVL_BEM = tb_trml_dspb.NR_UNVL_BEM
  ) AS tot_geral_bem,
  SUM(qt_trst) AS tot_trst_periodo
FROM terminais.tb_trml_dspb
WHERE periodo = '202401'
GROUP BY NR_UNVL_BEM, periodo;

 

  • Ajudou! 1
Link to comment
Compartilhe em outros sites

  • Casa do Desenvolvedor mudou o título para Como agrupar valores por período em uma Consulta SQL?
  • 1 month later...

Ao invés de fazer uma consulta, eu prefiro fazer duas consultas:

<?php
// mysql schema terminais
// tb (id,qt,periodo)(150,202401)(100,202402)
$pdo=new PDO("mysql:host=localhost;dbname=terminais","root","");
$total=$pdo->query("select sum(qt) as total from tb")
    ->fetchObject()->total;
$detalhes=$pdo->query("select *,sum(qt) as total from tb group by periodo")
    ->fetchAll(PDO::FETCH_OBJ);
?>
<table style="width:200px;margin:0 auto;margin-top:10px">
<tr><td>Total<td><?=$total?> ordens de serviço
<?php foreach($detalhes as $d): ?>
    <tr><td><?=$d->periodo?><td><?=$d->total?> ordens de serviço
<?php endforeach; ?>
</table>
  
Resultado:
Total	250 ordens de serviço
202401	150 ordens de serviço
202402	100 ordens de serviço

 

  • Ajudou! 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...