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

Група по седмица, как да получите празни седмици?

SQL не може да върне редове, които не съществуват в някаква таблица. За да получите желания ефект, ще ви е необходима таблица Седмици (WeekNo INT) с един ред за възможна седмица от годината (която IIRC е 53 или 54 възможни седмици, в зависимост от това как броите).

След това ПРИСЪЕДИНЕТЕ тази таблица към редовните си резултати с OUTER JOIN, за да добавите допълнителните седмици.

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

[Актуализиране]:Забележете потребителя на COUNT(дата), а не на COUNT(*). SQL няма да включва NULL стойности в колоната за дата при добавяне на COUNT. Тъй като липсващите седмици няма да съдържат дати, това правилно ще ви даде 0 събития за тези седмици.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO + MySQL винаги връща низове, но какво да кажем за MsSQL?

  2. mysql изберете група сума по дата

  3. Как да изхвърлям само определени таблици от MySQL?

  4. Въведение в SQL типове данни

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