sql >> Databasteknik >  >> RDS >> Mysql

Hur grupperar man antal rader per dag även under inga rader i MySQL?

För att hantera datum med 0 motsvarande poster, är min normala praxis att använda en kalendertabell att gå med på.

Skapa till exempel en tabell med ett fält som heter calendar_date och fyll i den med varje datum från 1st Jan 2000 till 31st Dec 2070 , eller något annat intervall som passar dina rapporteringsändamål.

Använd sedan något som...

SELECT
  calendar.calendar_date,
  COUNT(*)
FROM
  calendar
LEFT JOIN
  yourData
    ON  yourData.timeStamp >= calendar.calendar_date
    AND yourData.timeStamp <  calendar.calendar_date + 1
WHERE
      calendar.calendar_date >= '01 Jan 2012'
  AND calendar.calendar_date <  '04 Jan 2012'
GROUP BY
  calendar.calendar_date

Den här tabellen kan ha många extra användningsområden, som att flagga helgdagar, början av veckor och månader. Med försiktig användning av flaggor och index kan du få ut mycket av det.



  1. Exportera Blob från MySQL-databas till fil med endast SQL

  2. Hur konverterar man denna prepare-sats till att använda platshållare i Wordpress $wpdb?

  3. Oracle PLSQL-blockstruktur och -typer

  4. Få en lista över alla använda tabeller i en Postgresql SELECT-fråga