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

Групиране по седмица в MySQL

Две стъпки към това:

Първо, имате нужда от операция за съкращаване на седмицата - това ще отнеме вашия DATETIME артикул и върнете полунощ в предходната неделя (ако бизнес правилото ви казва, че седмицата започва в неделя).

Това става подходящ артикул ГРУПА ПО. Хакът WEEK() / YEAR() не е подходящ за това. Това наистина прави бъркотия през последната/първата седмица на всяка година.

Според моя опит този израз ще направи трик за съкращаване на седмицата вместо вас, неделя - събота,

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

За да получите седмици от понеделник до неделя, използвайте този израз.

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

Така че можете да направите това.

  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))

Как да групирате по седмица в MySQL?

Второ, трябва да добавите шест дни към тази съкратена дата, за да можете да покажете последния ден от всяка седмица заедно с първия ден.

Това е добър начин да направите това с вложена заявка

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

Прави ли много от това? Предлагам ви да създадете съхранена TRUNC_WEEK функция.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Изберете къде в много към много

  2. PHP – Съвпадащи думи за търсене mysql_query

  3. Извличане на първичен ключ от MySQL в PHP

  4. Спрете MySQL повторното използване на AUTO_INCREMENT ID

  5. ИЗБЕРЕТЕ различни стойности за множество редове с един и същ идентификатор