sql >> Database >  >> RDS >> Mysql

Hoe u waarden kunt krijgen voor elke dag in een maand

Dit is eigenlijk verrassend moeilijk om te doen in SQL. Een manier om dit te doen is om een ​​lange select-instructie te hebben met UNION ALL's om de getallen van 1 tot 31 te genereren. Dit demonstreert het principe, maar ik stopte bij 4 voor de duidelijkheid:

SELECT MonthDate.Date, COALESCE(SUM(`values`), 0) AS Total
FROM (
    SELECT 1 AS Date UNION ALL
    SELECT 2 UNION ALL
    SELECT 3 UNION ALL
    SELECT 4 UNION ALL
    --
    SELECT 28 UNION ALL
    SELECT 29 UNION ALL
    SELECT 30 UNION ALL
    SELECT 31) AS MonthDate
LEFT JOIN Table1 AS T1
ON MonthDate.Date = DAY(T1.Date)
AND MONTH(T1.Date) = 1 AND YEAR(T1.Date) = 2010
WHERE MonthDate.Date <= DAY(LAST_DAY('2010-01-01'))
GROUP BY MonthDate.Date

Het is misschien beter om een ​​tabel te gebruiken om deze waarden op te slaan en in plaats daarvan mee te doen.

Resultaat:

1, 34
2, 10
3, 0
4, 7


  1. Hernoem een ​​tabel in MySQL

  2. Django + MySQL - Admin Site - Gebruiker toevoegen - OperationalError - SAVEPOINT bestaat niet

  3. Trace Flag 3226 gebruiken om logboekregistratie van back-ups te onderdrukken

  4. Ontsnappende tekens zoals $ en % | MySQL en PHP