次の列を含むテーブルがあります。
- ID = 昇順の一意の識別子
- ProductId = 製品の ID
- rate1 ~ rate5 = 製品が 1 つ星、2 つ星、3 つ星、4 つ星、または 5 つ星の評価を受けた回数
- aveRate = その商品の平均評価
- lastSubDate = その商品のレビューが最後に送信された時刻
また、平均評価が 5 で、5 つ星評価の数が最も多く、最後のレビュー送信が過去 3 か月以内である ProductId を選択する SQL ステートメントを作成しようとしています。
テーブルは次の例のようになります。
ID ProductId rate1 rate2 rate3 rate4 rate5 aveRate lastSubDate
18 9996637 0 0 0 0 1 5 2011-08-10 12:00:34
26 9996628 1 0 0 0 0 1 2010-05-06 05:45:05
34 9996618 0 0 0 1 0 4 2011-10-09 09:00:45
36 9996614 5 0 0 0 0 1 2011-01-05 09:30:32
48 9996592 5 0 1 0 3 3 2012-11-28 19:00:06
66 9996566 0 0 0 1 3 5 2011-04-06 06:45:34
70 9996562 0 0 0 1 1 5 2011-05-17 18:30:03
これは私がこれまでに得たクエリです:
SELECT `ProductId`,`rate5`,`aveRate`,`lastSubDate`
FROM ratings
WHERE `aveRate` = 5 AND `lastSubDate` > '24 Feb 2013'
ORDER BY `rate5` DESC
LIMIT 3
これは、平均評価が 5 である 5 つ星のレビューが最も多い製品を返しますが、結果を過去 3 か月に限定するわけではありません。このステートメントを修正して、過去 3 か月のみからのデータも選択するにはどうすればよいですか?