Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Grupować według dnia i nadal wyświetlać dni bez wierszy?

MySQL nie wymyśli dla Ciebie wierszy, więc jeśli danych tam nie ma, naturalnie nie zostaną one pokazane.

Możesz utworzyć tabelę kalendarza i dołączyć do niej,

create table calendar (
    day date primary key,
);

Wypełnij tę tabelę datami (łatwo dzięki procedurze składowanej lub po prostu ogólnym skryptom), do około 2038 r., a coś innego prawdopodobnie zepsuje jednostkę, co stanie się problemem.

Twoje zapytanie staje się wtedy np.

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;

Teraz możesz rozszerzyć tabelę kalendarza o inne kolumny, które podają miesiąc, rok, tydzień itd., dzięki czemu możesz łatwo tworzyć statystyki dla innych jednostek czasu. (a puryści mogą argumentować, że tabela kalendarza miałaby klucz podstawowy będący liczbą całkowitą id, do którego odwołuje się tabela dzienników zamiast daty)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LOAD DATA INFILE Kod błędu:13

  2. Monitorowanie bazy danych — rozwiązywanie problemów z Prometheusem za pomocą pulpitów nawigacyjnych SCUMM

  3. Wydajność MySQL:MySQL kontra MariaDB

  4. Błąd w przygotowanym oświadczeniu

  5. Czy istnieją jakieś realne korzyści z używania RDBMS w porównaniu z płaskimi plikami w prostym systemie Web Doc (lub podstawowym CMS)?