gpt4 book ai didi

mysql - 使用MySQL选取最近三个月的数据

转载 作者:行者123 更新时间:2023-11-29 03:52:30 25 4
gpt4 key购买 nike

我有一个包含以下列的表格:

  • 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,但它并没有像我希望的那样将结果限制在过去三个月内。我如何修改此声明以仅选择最近三个月的数据?

最佳答案

您的日期常量格式错误。如果您使用的是固定日期,请试试这个:

... AND `lastSubDate` > '20130224'

您还可以使用上面的 20130224(不带引号)或 '2013-02-24' - 请参阅 MySQL Date and Time Literals documentation .

或者要计算“三个月前”,只需这样做:

... AND `lastSubDate` > CURDATE() - INTERVAL 3 MONTH

最后,这里不需要反引号。如果您发现它们分散您的注意力,您可以放弃它们:

... AND lastSubDate > whatever

关于mysql - 使用MySQL选取最近三个月的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16742576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com