首页 > 解决方案 > 检索最早日期的平均值

问题描述

我正在练习 MySQL,我正在尝试解决一个练习。我有包含酒店评论的数据。数据包含不同用户的评论:如果一个用户访问了不止一次,他们可以有很多评论。每条评论都有自己的id评论值,从 1 到 5。

评论也有日期,现在我想计算第一次访问的平均评论(最早日期)。我的问题是我试图检索最早日期的方法实际上并没有奏效。我的意思是,无论有没有HAVINGandWHERE方法,我都会得到相同的结果。有没有人可以帮助我解决这个问题?谢谢!

这是我的查询(我已尝试使用HAVINGandWHERE方法)

SELECT AVG(overall_rating), AVG(rooms_rating), AVG(service_rating), AVG(location_rating), AVG(value_rating)
FROM reviews
HAVING MIN(review_date)
#WHERE review_date IN (SELECT MIN(review_date) FROM repatrons_reviews GROUP BY id)

这是数据的示例

  user_id  | id  |  rooms_rating  | service_rating  |  location_rating  | value_rating |    date  
---------------------------------------------------------------------------------------
 matt21   |  123  |       4        |        5        |         2         |      4       |  2007-08-20

标签: mysqlsql

解决方案


你可以用 NOT EXISTS 来做到这一点:

SELECT AVG(r.overall_rating), AVG(r.rooms_rating), AVG(r.service_rating), AVG(r.location_rating), AVG(r.value_rating)
FROM reviews r
WHERE NOT EXISTS (SELECT 1 FROM reviews WHERE user_id = r.user_id AND date < r.date)

推荐阅读