sql >> Databáze >  >> RDS >> Mysql

Mysql součet záznamů podle měsíce za posledních 12 měsíců

Musíte provést vnější spojení s tabulkou, která obsahuje řádek pro každý měsíc. Za předpokladu, že takovou tabulku nemáte, můžete ji vytvořit za běhu pomocí pevně zakódovaného dotazu UNION:

SELECT * FROM
    (SELECT DATE_FORMAT(now(), "%b") as Month
     UNION
     SELECT DATE_FORMAT(now() - INTERVAL 1 MONTH), "%b")
     UNION
     SELECT DATE_FORMAT(now() - INTERVAL 2 MONTH), "%b")
     UNION
     ...
     SELECT DATE_FORMAT(now() - INTERVAL 11 MONTH), "%b")) AS Months
LEFT JOIN (SELECT DATE_FORMAT(drives.timestamp, "%b") AS Month,
                 drives.timestamp,
                 DATE_FORMAT(drives.timestamp, "%d-%m-%Y %H:%i:%s") AS Exact_date,
                 drives.departure,
                 drives.destination,
                 drives.route,
                 CONCAT(drivers.name, " ", drivers.surname) as driver,
                 drivers.id as driver_id
                 FROM drives, drivers WHERE drives.driver = drivers.id 
                 AND drives.timestamp > DATE_SUB(now(), INTERVAL 12 MONTH)) data
ON Months.Month = data.Month
ORDER BY data.timestamp

Všechny měsíce bez záznamů budou mít jeden řádek s NULL v datových sloupcích.




  1. Jak vyplnit číslo úvodními nulami v MariaDB

  2. Druh, který se rozlije na úroveň 15 000

  3. Podivné duplicitní chování z GROUP_CONCAT ze dvou LEFT JOINů ze GROUP_BYs

  4. MS-Access Class Module a VBA