mysql - 检索最早日期的平均值
问题描述
我正在练习 MySQL,我正在尝试解决一个练习。我有包含酒店评论的数据。数据包含不同用户的评论:如果一个用户访问了不止一次,他们可以有很多评论。每条评论都有自己的id
评论值,从 1 到 5。
评论也有日期,现在我想计算第一次访问的平均评论(最早日期)。我的问题是我试图检索最早日期的方法实际上并没有奏效。我的意思是,无论有没有HAVING
andWHERE
方法,我都会得到相同的结果。有没有人可以帮助我解决这个问题?谢谢!
这是我的查询(我已尝试使用HAVING
andWHERE
方法)
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
解决方案
你可以用 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)
推荐阅读
- apache-kafka - 如何管理春季批处理作业中使用的KafkaItemReader中的偏移量,以防在读取消息中发生任何异常
- ios - 成功的 Firestore 写入未反映在数据中
- python-3.x - 在对话流中发送批量创建实体请求时遇到问题
- c# - 为什么我的程序在我取消 BackgroundWorker 后执行?
- php - docker php-fpm 容器的 Nginx 配置:“访问脚本 '/xxx/xxx/openapi/index.html' 已被拒绝(请参阅 security.limit_extensions)”
- java - ElasticSearch 中的 LIKE
- c - C: UTF-8 程序中导入的 UTF-8 文件在 UTF-8 终端打印“?” 表示未知符号的字符
- node.js - Applying Authorization on Routes in Express.js
- node.js - $aggregation, $sum on two collections in MongoDB
- c# - Dot Net Framework 4.8 installs a lots of extra dependencies while installing nuget package