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

Групиране по ден и все още показване на дни без редове?

MySQL няма да измисли редове вместо вас, така че ако данните не са там, те естествено няма да бъдат показани.

Можете да създадете календарна таблица и да се присъедините към нея,

create table calendar (
    day date primary key,
);

Попълнете тази таблица с дати (лесно със съхранена процедура или просто някакъв общ скрипт) до около 2038 г. и нещо друго вероятно ще счупи единицата, което ще стане проблем.

Тогава вашата заявка става напр.

SELECT logTime, COUNT(*) 
  FROM calendar cal left join logs l on cal.day = l.logTime 
WHERE day >= '2011-02-01' AND day <= '2011-02-04' GROUP BY day;

Сега можете да разширите календарната таблица с други колони, които ви казват месец, година, седмица и т.н., за да можете лесно да произвеждате статистически данни за други времеви единици. (и пуристите могат да твърдят, че календарната таблица ще има първичен ключ с целочислен идентификационен номер, който таблицата с регистрационни файлове препраща вместо дата)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Инсталиране на Percona XtraDB Cluster на CentOS 7

  2. JDBC Създаване на таблица Пример за използване

  3. Неправилен ключов файл с MySQL

  4. Използване на JDeveloper с MySQL база данни и Oracle Database на AWS RDS, част 3

  5. НАЛЯВО ПРИСЪЕДИНЯВАНЕ след GROUP BY?