我有一个包含以下列的表:
- ID = 升序的唯一标识符
- ProductId = 产品 ID
- rate1 到 rate5 = 产品获得 1 星、2 星、3 星、4 星或 5 星评级的次数
- aveRate = 该产品的平均评分
- lastSubDate = 上次对该产品提交评论的时间
我正在尝试编写一条 SQL 语句,它选择具有最高 5 星评级的 ProductId,平均评级为 5,并且最后一次提交评论是在过去三个月内。
该表类似于以下示例:
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,但它不会将结果限制为我想要的最后三个月。如何修改此声明以仅选择过去三个月的数据?