Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kelompokkan berdasarkan minggu di MySQL

Dua langkah untuk ini:

Pertama, Anda memerlukan operasi pemotongan seminggu -- yang akan memakan waktu DATETIME item dan berikan kembali tengah malam pada hari Minggu sebelumnya (jika aturan bisnis Anda mengatakan bahwa minggu itu dimulai pada hari Minggu).

Itu menjadi item GROUP BY yang cocok. Peretasan WEEK() / YEAR() tidak cocok untuk ini. Itu benar-benar membuat kekacauan di minggu terakhir/pertama setiap tahun.

Menurut pengalaman saya, ekspresi ini akan melakukan trik pemotongan minggu untuk Anda, Minggu - Sabtu,

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

Untuk mendapatkan minggu Senin - Minggu, gunakan ungkapan ini.

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

Jadi Anda bisa melakukan ini.

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

Bagaimana cara mengelompokkan berdasarkan minggu di MySQL?

Kedua, Anda perlu menambahkan enam hari ke tanggal terpotong tersebut, sehingga Anda dapat menampilkan hari terakhir setiap minggu bersama dengan hari pertama.

Ini adalah cara yang baik untuk melakukannya, dengan kueri bersarang

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

Melakukan banyak hal ini? Saya sarankan Anda membuat TRUNC_WEEK yang tersimpan fungsi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mongoDB vs mySQL -- mengapa yang satu lebih baik dari yang lain dalam beberapa aspek

  2. Cara membangun Rest API dengan Spring Boot menggunakan MySQL dan JPA

  3. mysql pilih jumlah catatan untuk setiap bulan

  4. Konversikan kalender Jalali ke Gregorian dengan PHP di CodeIgniter

  5. Apakah ada praktik terbaik/cara yang koheren untuk memperbarui bidang database yang berisi penyimpanan nilai kunci hash?