sql >> データベース >  >> RDS >> Mysql

現在の52週間のアイテムを週ごとにカウントするMySQLクエリ?

    このアプローチを嫌う人もいますが、私は0〜1000の値を含むダミーテーブルを使用し、派生テーブルを使用して必要な範囲を生成する傾向があります-

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

    自動インクリメントIDと多数の行を持つテーブルがある場合は、そこから生成できます-

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

    0の値を挿入することを忘れないでください。

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

    したがって、このアプローチをクエリに適用すると、次のようなことができます-

    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. MySQL日付フィールドからの「0000-00-00」のブロック

    2. Mac OS XにMySQLdb(MySQLへのPythonデータアクセスライブラリ)をインストールするにはどうすればよいですか?

    3. IDが配列内にあるMysql

    4. MySQL 5.7エラー(1093:FROM句で更新するターゲットテーブル___を指定できません)-通常のソリューションが機能していません