从平均值

时间:2016-05-09 11:57:27

标签: mysql average

我有下表:

rating
--------
| id | account_id | room | kitchen | bathroom |
-----------------------------------------------
| 1  | 1          | 5    | 5       | 5        |
| 2  | 1          | 2    | 4       | 1        |
| 3  | 1          | 5    | 2       | 1        |
-----------------------------------------------

人们可以评价房间,厨房和浴室(从1-5开始)。

ID = 1:5的平均评分(因为15/3 = 5)

ID = 2的平均评分:2.3333(因为7/3 = 2.33333)

ID = 3的平均评分:2.6666(因为8/3 = 2.66665)

第一个问题

如您所见,ID = 2 =>的平均评分2.3333 ...并且对于ID = 3 => 2.6666。我怎样才能使它成为floor()和ceil()? (当< .5 => floor,当> .5 => ceil时),以便ID = 2的平均等级变为2(而不是2.3333)并且ID = 3的平均等级变为3(而不是2.6666 ...)

第二个问题

我想选择平均评分的平均评分(所以所有行的平均评分一起)。所以 - 当使用floor()和ceil()时,我有3个平均评级:5,2和3 => 10/15 => 3.我如何到达3?

提前致谢!

2 个答案:

答案 0 :(得分:1)

对于第一个问题,答案是round()

name_scope

对于第二个,你只需使用聚合:

select round( (room + kitchen + bathroom) / 3)

如果您想要舍入结果的平均值:

select avg(room + kitchen + bathroom)
from ratings;

然而,这对我来说似乎很奇怪。

答案 1 :(得分:0)

使用 ROUND 功能。

<强>查询

SELECT id, ROUND(((room + kitchen + bathroom)/3), 0) as `average`
FROM rating
GROUP BY id;