sql >> Database >  >> RDS >> Mysql

Vul ontbrekende gaten in de periodequery op met behulp van de kalendertabel

U hebt een outer join nodig op de kalendertabel. Iets als

SELECT c.cal_date, coalesce(t1.price, 0) as total
FROM calendar c
LEFT JOIN (SELECT b.purchase_date::date, sum(price) as price 
           FROM order_products a 
           INNER JOIN order_saved b 
                   ON a.order_id = b.id 
                   AND b.purchase_date BETWEEN '2011-09-16 23:59' AND '2011-10-16 23:59' 
                   AND b.status > 2
                   AND a.usr_id = 'XXXX'
            GROUP BY b.purchase_date) t1 on t1.purchase_date = c.cal_date
WHERE cal_date BETWEEN '2011-09-16 23:59' AND '2011-10-16 23:59' 
ORDER BY c.cal_date

Je krijgt betere antwoorden als je de DDL post (CREATE TABLE ) verklaringen, en minimale INSERT uitspraken die ons voldoende gegevens geven om onze antwoorden daadwerkelijk te testen. (Bewerk uw vraag en plak de DDL- en INSERT-instructies.)



  1. Hoe de BINARY-operator werkt in MariaDB

  2. 5 eenvoudige stappen om aan de slag te gaan met MariaDB en Tableau

  3. JDBCTemplate set geneste POJO met BeanPropertyRowMapper

  4. Alle records van een jaar geleden tot nu selecteren