Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да групирам броя редове на ден също и в дни без ред в MySQL?

За да се справя с дати с 0 съответстващи записи, обичайната ми практика е да използвам календарна таблица, към която да се присъединя.

Например, създайте таблица с едно поле, наречено calendar_date и го попълнете с всяка дата от 1st Jan 2000 до 31st Dec 2070 , или някакъв друг диапазон, който отговаря на вашите отчетни цели.

След това използвайте нещо като...

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

Тази таблица може да има много допълнителни приложения, като маркиране на официални празници, начало на седмици и месеци. С разумно използване на флагове и индекси можете да извлечете много от него.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql заявка за намиране на хакери, които са направили поне 1 изпращане всеки ден

  2. Използване на безкрайно превъртане с MySQL база данни

  3. Намерете общия брой въз основа на стойности от друга таблица

  4. Коя структура от данни се използва в MySql?

  5. Сравняване на Null с друга стойност в MySQL Trigger