下面是我的表(tblReviewRating
)的数据:
rrFood rrService rrCleanliness rrAmbience rrBqtID rrCusID
------ --------- ------------- ---------- ------- -------
3 4 2 1 1 1
5 4 3 2 1 2
4 2 4 2 2 5
4 2 4 2 2 7
4 2 4 2 2 9
我正在尝试计算每个独立宴会厅(rrBqtID
)的前四列(5个比例)的平均值来自客户(rrCusID
):
SELECT rrFood,rrService,rrCleanliness,rrAmbience,
ROUND(AVG(rrFood+rrService+rrCleanliness+rrAmbience),2) AS AverageRating
FROM tblReviewRating
GROUP BY rrFood,rrService,rrCleanliness,rrAmbience
我如何计算其客户给出的每个宴会厅的四种服务的平均评级和AverageRating
的平均值?
编辑:我想在我的查询中应用this example来计算评级。
如果你想要rrBqtID,rrCusID的avg你应该为rrFood,rrService,rrCleanliness,rrAmbience分组,但对于rrBqtID,rrCusID
SELECT rrBqtID, rrCusID,
ROUND(AVG(rrFood+rrService+rrCleanliness+rrAmbience),2) AS AverageRating
FROM tblReviewRating
GROUP BY rrBqtID, rrCusID
如果你想看到其他地方附近的平均值你应该使用连接例如;
SELECT A.rrFood,A.rrService,A.rrCleanliness,A.rrAmbience , T.AverageRating
FROM tblReviewRating A
INNER JOIN (
SELECT rrBqtID, rrCusID,
ROUND(AVG(rrFood+rrService+rrCleanliness+rrAmbience),2) AS AverageRating
FROM tblReviewRating
GROUP BY rrBqtID, rrCusID
) T ON T.rrBqtID = A.rrBqtID and T.rrCusID = A.rrCusID
这可能会帮助您了解每个宴会厅的平均评分。希望这可以帮助。
SELECT rrBqtID, AVG(rrFood) AS AVGrrFood,AVG(rrService) AS AVGrrService,AVG(rrCleanliness) AS AVGrrCleanliness,AVG(rrAmbience) AS AVGrrAmbience,
ROUND(AVG((rrFood+rrService+rrCleanliness+rrAmbience)/4),2) AS AverageRating
FROM tblReviewRating
GROUP BY rrBqtID
你不应该group by
你正在聚集的column
s,但你想column
的group by
s。所以,不是分别由rrFood
,rrService
,rrCleanliness
,rrAmbience
分组,你应该分别使用group by
rrBqtID
和rrCustID
。
你可以用公式得到四个column
s的平均值
(column1 + column2 + column3 + column4)/ 4
然后使用AVG
汇总这个:
select rrBqtID, rrCustID, AVG(AverageRating) as AverageRating
from
(SELECT rrBqtID, rrCustID, ROUND(rrFood+rrService+rrCleanliness+rrAmbience) / 4,2) AS AverageRating
FROM tblReviewRating) t
group by rrBqtID, rrCustID