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

Grupuj według tygodnia w MySQL

Dwa kroki do tego:

Po pierwsze, potrzebujesz tygodniowej operacji skrócenia — to zajmie Twoją DATETIME przedmiot i oddaj północ w poprzednią niedzielę (jeśli reguła biznesowa mówi, że tydzień zaczyna się w niedzielę).

Staje się to odpowiednią pozycją GROUP BY. Hack WEEK() / YEAR() nie jest do tego odpowiedni. To naprawdę robi bałagan w ostatnim/pierwszym tygodniu każdego roku.

Z mojego doświadczenia wynika, że ​​to wyrażenie zrobi za ciebie tygodniową sztuczkę, niedziela - sobota,

  FROM_DAYS(TO_DAYS(TIMESTAMP) -MOD(TO_DAYS(TIMESTAMP) -1, 7))

Aby uzyskać od poniedziałku do niedzieli, użyj tego wyrażenia.

  FROM_DAYS(TO_DAYS(TIMESTAMP) -MOD(TO_DAYS(TIMESTAMP) -2, 7))

Więc możesz to zrobić.

  SELECT COUNT(whatever), SUM(whatelse),
         FROM_DAYS(TO_DAYS(event_time) -MOD(TO_DAYS(event_time) -1, 7)) as WEEKSTART,
    FROM TABLE
   GROUP BY FROM_DAYS(TO_DAYS(event_time) -MOD(TO_DAYS(event_time) -1, 7))

Jak grupować według tygodnia w MySQL?

Po drugie, musisz dodać sześć dni do tej skróconej daty, aby móc wyświetlać ostatni dzień każdego tygodnia wraz z pierwszym dniem.

Jest to dobry sposób na zrobienie tego za pomocą zapytania zagnieżdżonego

SELECT whats, elses, weekstart, weekstart + INTERVAL 6 DAY AS weekend
  FROM (
  SELECT COUNT(whatever) AS whats, SUM(whatelse) AS elses,
         FROM_DAYS(TO_DAYS(event_time) -MOD(TO_DAYS(event_time) -1, 7)) AS weekstart,
    FROM TABLE
   GROUP BY FROM_DAYS(TO_DAYS(event_time) -MOD(TO_DAYS(event_time) -1, 7))
  ) AS summary
ORDER BY weekstart

Robisz tego dużo? Proponuję utworzyć zapisany TRUNC_WEEK funkcja.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd migracji rzemieślnika php:podano nazwę węzła lub nazwę serwera lub nie znamy

  2. jak połączyć dwie tabele na wspólnych atrybutach w mysql i php?

  3. Zapytanie MySQL zajmuje ponad 6 sekund

  4. Jak buforować obiekty utworzone z bazy danych MySQL

  5. Składnia SQL ALTER TABLE – wymienione przez DBMS