Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

231
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!