我有下表:
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?
提前致谢!
答案 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;