ola to tentando recuperar varios dados diferentes em uma unica tabela com o seguinte codigo:
select count(id) as tempo15,
(select count(id) as tempo30 from tb_atend_senhas where tempo_atendimento > (15*60) and tempo_atendimento <= (30*60) group by date(dh_inicio_atendimento) order by date(dh_inicio_atendimento) desc limit 1),
(select count(id) as tempo45 from tb_atend_senhas where tempo_atendimento > (30*60) and tempo_atendimento <= (45*60) group by date(dh_inicio_atendimento) order by date(dh_inicio_atendimento) desc limit 1),
(select count(id) as tempom45 from tb_atend_senhas where tempo_atendimento > (45*60) group by date(dh_inicio_atendimento) order by date(dh_inicio_atendimento) desc limit 1),
date(dh_inicio_atendimento) as dia
from tb_atend_senhas where tempo_atendimento < (15*60) group by date(dh_inicio_atendimento) order by date(dh_inicio_atendimento) desc
porem ta vindo com inconsistência, por exemplo na minha tabela só deveria retornar 2 valores no campo tempom45 em 2 dias e o resto deveria vir zero e ta vindo o valor repetido em todos os campos
os dados estao salvos em segundos
Tive dificuldde em perceber o que pretendes, mas parece-me que será isto
SELECT
(select count(id) from tb_atend_senhas s1 where s1.tempo_atendimento <= (15*60) and s.dh_inicio_atendimento = s1.dh_inicio_atendimento) as tempo15,
(select count(id) from tb_atend_senhas s2 where s2.tempo_atendimento > (15*60) and s2.tempo_atendimento <= (30*60) and s.dh_inicio_atendimento = s2.dh_inicio_atendimento) as tempo30,
(select count(id) from tb_atend_senhas s3 where s3.tempo_atendimento > (30*60) and s3.tempo_atendimento <= (45*60) and s.dh_inicio_atendimento = s3.dh_inicio_atendimento) as tempo45,
(select count(id) from tb_atend_senhas s4 where s4.tempo_atendimento > (45*60) and s.dh_inicio_atendimento = s4.dh_inicio_atendimento) as tempom45,
date(s.dh_inicio_atendimento) as dia
from tb_atend_senhas s
group by date(s.dh_inicio_atendimento)
order by date(s.dh_inicio_atendimento) desc
tenho que selecionar a quantidade de atendimentos ate 15min, entre 15 e 30 min, entre 30 e 45 min e com mais de 45 min em cada dia, essa tua query retornou um erro parecido com o q to tendo, vem todas as linhas com o valor repetido
Olha só, pra facilitar a vida de quem quer te ajudar, coloca o esquema, alguns dados de exemplo e o resultado que você espera aqui https://www.db-fiddle.com/
tentei o codigo do pmlm no mysql com phpmyadmin e deu certinho do jeito que eu queria, mas no postgresql vem o seguinte erro: SQL Error [42803]: ERROR: subquery uses ungrouped column “s.dh_inicio_atendimento” from outer query
Position: 95
Segui a lógica das subqueries que tinhas mas talvez se possa colocar tudo numa query
SELECT sum(case when tempo_atendimento <= (15*60) then 1 else 0 end) as tempo15,
sum(case when tempo_atendimento > (15*60) and tempo_atendimento <= (30*60) then 1 else 0 end) as tempo30,
sum(case when tempo_atendimento > (30*60) and tempo_atendimento <= (45*60) then 1 else 0 end) as tempo45,
sum(case when tempo_atendimento > (45*60) then 1 else 0 end) as tempom45,
date(dh_inicio_atendimento) as dia
from tb_atend_senhas
group by date(dh_inicio_atendimento)
order by date(dh_inicio_atendimento) desc