计算列和行的平均值

问题描述 投票:1回答:3

下面是我的表(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来计算评级。

sql sql-server average rating
3个回答
2
投票

如果你想要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

1
投票

这可能会帮助您了解每个宴会厅的平均评分。希望这可以帮助。

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

1
投票

你不应该group by你正在聚集的columns,但你想columngroup bys。所以,不是分别由rrFoodrrServicerrCleanlinessrrAmbience分组,你应该分别使用group by rrBqtIDrrCustID

你可以用公式得到四个columns的平均值

(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
© www.soinside.com 2019 - 2024. All rights reserved.