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

Jak grupować według tygodnia w MySQL?

Możesz użyć obu opcji YEAR(timestamp) i WEEK(timestamp) i użyj obu tych wyrażeń w SELECT i GROUP BY klauzula.

Niezbyt elegancki, ale funkcjonalny...

I oczywiście możesz również połączyć te dwie części daty w jedno wyrażenie, np. coś takiego jak

SELECT CONCAT(YEAR(timestamp), '/', WEEK(timestamp)), etc...
FROM ...
WHERE ..
GROUP BY CONCAT(YEAR(timestamp), '/', WEEK(timestamp))

Edytuj :Jak wskazuje Martin możesz również użyć YEARWEEK(mysqldatefield) funkcja, chociaż jej dane wyjściowe nie są tak przyjazne dla oka, jak dłuższa formuła powyżej.

Edytuj 2 [3 1/2 roku później!]:
YEARWEEK(mysqldatefield) z opcjonalnym drugim argumentem (mode ) ustawione na 0 lub 2 to prawdopodobnie najlepszy sposób na agregację według ukończenia tygodni (tj. wliczając w to tygodnie, które trwają ponad 1 stycznia), jeśli jest to pożądane. YEAR() / WEEK() podejście początkowo zaproponowane w tej odpowiedzi skutkuje podziałem zagregowanych danych dla takiego "straddlingu" tygodnie na dwa:jeden z poprzednim rokiem, jeden z nowym.
Co roku czyste cięcie, kosztem dwóch niepełnych tygodni, jednego na każdym końcu, jest często pożądane w księgowości itp. a do tego YEAR() / WEEK() podejście jest lepsze.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja MySQL COT() — zwraca cotangens liczby w MySQL

  2. FROM_UNIXTIME() Przykłady – MySQL

  3. CURRENT_TIMESTAMP Przykłady – MySQL

  4. Czy możliwe jest posiadanie indeksu opartego na funkcjach w MySQL?

  5. mysql SQL:określony element jako pierwszy, a następnie sortowanie pozostałych elementów