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

Permintaan MySQL untuk menghitung item per minggu selama 52 minggu saat ini?

Beberapa orang tidak menyukai pendekatan ini tetapi saya cenderung menggunakan tabel dummy yang berisi nilai dari 0 - 1000 dan kemudian menggunakan tabel turunan untuk menghasilkan rentang yang diperlukan -

CREATE TABLE dummy (`num` INT NOT NULL);
INSERT INTO dummy VALUES (0), (1), (2), (3), (4), (5), .... (999), (1000);

Jika Anda memiliki tabel dengan id yang bertambah secara otomatis dan banyak baris, Anda dapat membuatnya dari itu -

CREATE TABLE `dummy`
SELECT id AS `num` FROM `some_table` WHERE `id` <= 1000;

Ingatlah untuk memasukkan nilai 0.

SELECT CURRENT_DATE - INTERVAL num DAY
FROM dummy
WHERE num < 365

Jadi, dengan menerapkan pendekatan ini pada kueri Anda, Anda dapat melakukan sesuatu seperti ini -

SELECT WEEK(calendar.datefield) AS `week`, IFNULL(SUM(purchaseyesno),0) AS item_sales
FROM items_purchased join items on items_purchased.item_id=items.item_id 
RIGHT JOIN (
    SELECT (CURRENT_DATE - INTERVAL num DAY) AS datefield
    FROM dummy
    WHERE num < 365
) AS calendar ON (DATE(items_purchased.purchase_date) = calendar.datefield)
WHERE calendar.datefield >= (CURRENT_DATE - INTERVAL 1 YEAR)
GROUP BY week(datefield) -- shouldn't this be datefield instead of date?


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jumlah catatan mysql di kursor tanpa iterasi?

  2. Peningkatan otomatis MySQL antar tabel

  3. Spring Data sepertinya tidak mengerti nama @Column

  4. MYSQL - Bagaimana cara menggabungkan dua kueri untuk menghilangkan elemen yang ditemukan di kueri kedua (atau mungkin solusi yang lebih baik?)

  5. Ekspresi Kasus vs Pernyataan Kasus