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

Grupuj po tygodniu, jak uzyskać puste tygodnie?

SQL nie może zwrócić wierszy, które nie istnieją w jakiejś tabeli. Aby uzyskać pożądany efekt, będziesz potrzebować tabeli Tygodnie (WeekNo INT) z jednym wierszem na możliwy tydzień roku (który, IIRC, jest albo 53 lub 54 możliwymi tygodniami, w zależności od tego, jak liczysz).

Następnie DOŁĄCZ do tej tabeli do swoich regularnych wyników za pomocą opcji OUTER JOIN, aby dodać dodatkowe tygodnie.

SELECT DATE_FORMAT(date, 'Y:%X - Week:%V') AS regweek, COUNT(date) as number 
    FROM YourTable RIGHT OUTER JOIN Weeks ON WEEK(YourTable.date) = Weeks.WeekNo

[Aktualizacja]:Zwróć uwagę na użytkownika COUNT(data) zamiast COUNT(*). SQL nie będzie zawierał wartości NULL w kolumnie daty podczas dodawania COUNT. Ponieważ brakujące tygodnie nie będą zawierały żadnych dat, to poprawnie da ci 0 wydarzeń w tych tygodniach.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Problem z porównywaniem dat MySQL

  2. Wędrujące przekierowanie portów dla Mysql

  3. Tworzenie widoku w różnych bazach danych

  4. SQL:Jak wykonać ciąg znaków nie jest równy

  5. Czy muszę używać mysql_close(connection)?