sql - 如何根据另一个表中的平均值对一个SQL表进行排序
问题描述
我在进行查询时遇到了很大的困难,我想根据另一个表中的平均值对查询进行排序。我有一个带有 HotelID、HotelName、PricePerNight、LeftCoordinate 和 TopCoordinate 的 tblHotels 表,以及一个带有 HotelID 和 HotelRating 的 tblRatings 表(从各种用户/多个评级中排名从 1 到 10)。
我希望我的查询显示 PricePerNight(来自 tblHotels)在给定范围内(在 lowervalue 和 uppervalue 之间)的所有酒店,然后按它们在 tblRatings 中的评级对其进行排序。
SELECT tblRatings.HotelID
, tblHotels.HotelName
, LeftCoordinate
, TopCoordinate
, AVG(HotelRating) AS Rating
FROM tblRatings, tblHotels
WHERE ( SELECT HotelID
FROM tblHotels
WHERE PricePerNight BETWEEN LowerValue AND UpperValue) =
tblRatings.HotelID
GROUP BY tblRatings.HotelID
ORDER BY AVG(HotelRating) DESC
SELECT tblRatings.HotelID
, HotelName
, LeftCoordinate
, TopCoordinate
, AVG(HotelRating) AS Rating
FROM tblHotels, tblRatings
WHERE (PricePerNight BETWEEN LowerValue AND UpperValue) AND (tblHotels.HotelID = tblRatings.HotelID)
GROUP BY tblRatings.HotelID
ORDER BY AVG(HotelRating) DESC
我尝试了一个子查询和一个相关的表查询,但都给了我错误“HotelName 不是聚合函数的一部分”
我在网上找了一个解决方案,但没有成功:(
解决方案
基本上你需要按更多的东西分组......
SELECT tblRatings.HotelID
, HotelName
, LeftCoordinate
, TopCoordinate
, AVG(HotelRating) AS Rating
FROM tblHotels, tblRatings
WHERE (PricePerNight BETWEEN LowerValue AND UpperValue) AND (tblHotels.HotelID = tblRatings.HotelID)
GROUP BY tblRatings.HotelID, HotelName, LeftCoordinate, TopCoordinate
ORDER BY AVG(HotelRating) DESC
推荐阅读
- r - R中for循环的奇怪行为
- html - 角度将css变量分配给课前课后
- django - 选择所有字段并按一个分组
- javascript - 如何在javascript中编辑数组的最高5个值?
- reactjs - 我没有安装 webpack,但是 webpack --version 找到了 webpack
- c - c语言解压字符串
- javascript - 获取中的自定义标头未命中服务器
- python - 如果深度学习模型的训练样本很少,使用更多的 epoch 会帮助模型获得更好的准确性吗?
- python - 得到这个错误'str'对象没有属性'get'
- json - Json4s在jar升级后提取json期间抛出错误