2012-11-12 32 views
1

好吧,我有一個數據庫有三列:id,用戶名和評級。Oracle中另一列相關列的平均值

該數據庫將是這樣的:

------------ ------------ ------------ 
|  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; 

但結果是顯示我什麼。代碼有什麼問題?

回答

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 
0

SELECT ID,AVG(等級) FROM THING GROUP BY ID

會給你的平均得分爲每如果你想要任何條件的平均評分,你可以添加條款。

相關問題