好的,所以我有一个包含三列的数据库:id,username和rating。
数据库看起来像这样:
------------ ------------ ------------
| ID | NAME | RATING |
------------ ------------ ------------
| 1 | bc112 | 3 |
------------ ------------ ------------
| 2 | cd111 | 1 |
------------ ------------ ------------
| 2 | cd111 | 2 |
------------ ------------ ------------
| 2 | cd111 | 6 |
------------ ------------ ------------
所以基本上我陷入困境的是如何获得每个特定用户的平均评分?
我试过了:
SELECT ID, RATING
FROM THING
WHERE AVG(RATING) FOR ID < 3;
但结果却没有告诉我什么。代码有什么问题?
答案 0 :(得分:1)
使用AVG
聚合函数,group by
子句和having
子句如下:
SQL> with t1 (ID, NAME, RATING) as
2 (
3 select 1, 'bc112', 3 from dual union all
4 select 2, 'cd111', 1 from dual union all
5 select 2, 'cd111', 2 from dual union all
6 select 2, 'cd111', 6 from dual
7 )
8 select ID
9 , NAME
10 , avg(rating)
11 from t1
12 group by id, name
13 having avg(rating) > 2
14 ;
ID NAME AVG(RATING)
---------- ----- -----------
1 bc112 3
2 cd111 3
答案 1 :(得分:0)
SELECT ID,AVG(RATING) 从那里 GROUP BY id
如果您想要平均评级的任何条件,您可以为每个ID提供平均评级。