Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

225
Visualizações
Mostrar fechas que tienen 0 datos de conteo

tengo una consulta como esta

 SELECT d.create_at :: DATE AS dates, count(r.id) AS usages FROM reports r LEFT JOIN dispatches d ON r.dispatch_id = d.id LEFT JOIN messages m ON d.message_id = m.id WHERE r.status = 'SUCCESS' AND r.update_at :: DATE BETWEEN DATE '2020-05-01' AND '2020-05-10' AND m.client_id = 6 GROUP BY dates ORDER BY dates;

que generará un resultado como este

resultado

no hay datos en la fecha 2020-05-03 y 2020-05-08, por lo que no se mostrarán en el resultado

¿Cómo agrego esas fechas que no tienen datos y doy el dato de conteo 0 como valor?

Lo siento, soy nuevo en Postgres y DB en general.

He seguido varias soluciones de todas partes y no parece obtener el resultado que quiero todavía

Trato de usar generate_series pero no salió ningún resultado

 SELECT x.day AS dates, count(r.id) AS usages FROM ( SELECT generate_series(timestamp '2020-05-01' , timestamp '2020-05-10' , interval '1 day')::date ) x(day) left join dispatches d on d.create_at = x.day LEFT JOIN reports r ON d.id = r.dispatch_id LEFT JOIN messages m ON d.message_id = m.id WHERE r.status = 'SUCCESS' AND r.update_at :: DATE BETWEEN DATE '2020-05-01' AND '2020-05-10' AND m.client_id = 6 GROUP BY dates ORDER BY dates;

Lo siento si me estoy perdiendo algo obvio. Cualquier ayuda sería apreciada gracias!

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Estuvo cerca, pero su cláusula WHERE convierte la combinación externa nuevamente en una combinación interna. Debe mover esa condición a la condición JOIN.

 SELECT x.day AS dates, count(r.id) AS usages FROM ( SELECT generate_series(timestamp '2020-05-01' , timestamp '2020-05-10' , interval '1 day')::date ) x(day) left join dispatches d on d.create_at = x.day LEFT JOIN reports r ON d.id = r.dispatch_id and r.status = 'SUCCESS' AND r.update_at::DATE BETWEEN DATE '2020-05-01' AND '2020-05-10' AND m.client_id = 6 LEFT JOIN messages m ON d.message_id = m.id GROUP BY dates ORDER BY dates;
over 4 years ago · Santiago Trujillo Relatório

0

Utilice la siguiente consulta,

 SELECT dt.date_seq :: DATE AS dates, count(r.id) AS usages FROM reports r LEFT JOIN dispatches d ON r.dispatch_id = d.id LEFT JOIN messages m ON d.message_id = m.id FULL OUTER JOIN (select CURRENT_DATE + i as date_seq from generate_series(date '2020- 05-01'- CURRENT_DATE, date '2020-05-10' - CURRENT_DATE ) i) dt ON d.create_at = dt.date_seq WHERE r.status = 'SUCCESS' AND r.update_at :: DATE BETWEEN DATE '2020-05-01' AND '2020-05-10' AND m.client_id = 6 GROUP BY dates ORDER BY dates;
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda