人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQL

写真の様なテーブルがあります。

このテーブルにはECサイトで販売した商品名がログとして入っています。

やりたいこと:
当日の販売した商品の内、前日よりも急に売れている商品名を取り出すSQLをお願いします。

写真の例ですと、product_nameの中に入っている商品目の内、ZAURUSが急に増えています。

過去1週間のZAURUS販売平均数より、2倍の場合のみ取り出すSQLをお願いします。

1473850841
●拡大する

●質問者: webtomake
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● phplove
●300ポイント

今日は8/2ではないのでアレですが

今日売れた商品はこんな感じ
mysql> SELECT product_name,COUNT(id) AS num FROM `table` WHERE `date`='2016/8/2' GROUP BY product_name;

product_name num
ZAURUS 4
掃除機 1

過去1週間(1日前と8日前の間)に売れた商品
mysql> SELECT product_name,COUNT(id) AS num_old FROM `table` WHERE `date` BETWEEN '2016/8/2' - INTERVAL 8 DAY AND '2016/8/2' - INTERVAL 1 DAY GROUP BY product_name;

product_name num_old
iPhone 1
ZAURUS 1
エアコン 2
掃除機 3

これをLEFT JOIN
mysql> SELECT * FROM (SELECT product_name,COUNT(id) AS num FROM `table` WHERE `date`='2016/8/2' GROUP BY product_name) a LEFT JOIN (SELECT product_name,COUNT(id) AS num_old FROM `table` WHERE `date` BETWEEN '2016/8/2' - INTERVAL 8 DAY AND '2016/8/2' - INTERVAL 1 DAY GROUP BY product_name) b USING (product_name);

product_name num num_old
ZAURUS 4 1
掃除機 1 3

平均の倍売れてるものだけ抽出
mysql> SELECT * FROM (SELECT product_name,COUNT(id) AS num FROM `table` WHERE `date`='2016/8/2' GROUP BY product_name) a LEFT JOIN (SELECT product_name,COUNT(id) AS num_old FROM `table` WHERE `date` BETWEEN '2016/8/2' - INTERVAL 8 DAY AND '2016/8/2' - INTERVAL 1 DAY GROUP BY product_name) b USING (product_name) WHERE (num_old IS NULL) OR (num > num_old / 7 * 2);

product_name num num_old
ZAURUS 4 1
掃除機 1 3

CURDATE() とかを使えばそれらしくなるのではないでしょうか?

SELECT * FROM (SELECT product_name,COUNT(id) AS num FROM `table` WHERE `date`=CURDATE() GROUP BY product_name) a LEFT JOIN (SELECT product_name,COUNT(id) AS num_old FROM `table` WHERE `date` BETWEEN CURDATE() - INTERVAL 8 DAY AND CURDATE() - INTERVAL 1 DAY GROUP BY product_name) b USING (product_name) WHERE (num_old IS NULL) OR (num > num_old / 7 * 2);

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ