【发布时间】:2013-05-24 19:47:16
【问题描述】:
我有一个包含以下列的表格:
- ID = 按升序排列的唯一标识符
- ProductId = 产品 ID
- rate1 到 rate5 = 产品获得 1 星的次数,2 星级、3 星、4 星或 5 星评级
- aveRate = 该产品的平均评分
- lastSubDate = 上次为该产品提交评论的时间
我正在尝试编写一条 SQL 语句,该语句选择具有最高 5 星评级且平均评级为 5 且最后一次提交评论是在过去三个月内的 ProductId。
表格如下例所示:
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,但它并不会像我想要的那样将结果限制在最近三个月。如何修改此语句以仅选择过去三个月的数据?
【问题讨论】:
-
最后一个问题是关于如何合并两个表中的数据。这个问题得到了很好的回答,我现在有了一个包含所有这些数据的新表。这个问题是关于使用这个新的时间戳对此运行一个选择查询。
-
是的,这不应该被关闭。这是一个不同的问题。