sql >> Databáze >  >> RDS >> PostgreSQL

Zřetězené spojení nefiltruje podle očekávání

Uvědomil jsem si, že potřebuji podvýběr, jako je tento:

SELECT 
  UPPER(TO_CHAR(d.start_date, 'mon')) AS month,
  EXTRACT(MONTH FROM d.start_date) AS month_num,
  SUM(t.cost_planned) FILTER (WHERE t.aasm_state IN ('open', 'planned' ) ) AS planned,
  SUM(t.cost_actual)  FILTER (WHERE t.aasm_state = 'closed') AS actual
FROM GENERATE_SERIES('2020-01-01'::date, '2020-12-01'::date, '1 month') d(start_date)
LEFT JOIN
(
SELECT t.*
FROM activity_tasks t
LEFT JOIN activities a
ON a.id = t.activity_id
WHERE a.type = 'My Type'
) AS t ON t.start_date >= d.start_date and t.start_date < d.start_date + '1 month'::interval
GROUP BY d.start_date
ORDER BY d.start_date



  1. Porovnejte dva záznamy a ukažte pouze rozdíl

  2. chcete zobrazit kladné a záporné hodnoty v různých sloupcích prostřednictvím jediného dotazu

  3. Jak vygenerovat úryvek jako ty, které generuje Google s PHP a MySQL?

  4. Jak CONCAT_WS() funguje v PostgreSQL