1

好的,所以我有一个包含三列的数据库:id、用户名和评级。

数据库将如下所示:

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

但结果什么也没告诉我。代码有什么问题?

4

2 回答 2

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
于 2012-11-12T05:13:45.070 回答
0

从 THING GROUP BY id 中选择 ID、AVG(RATING)

如果您想要平均评分的任何条件,您可以添加每个 ID 的平均评分。

于 2012-11-12T05:20:09.390 回答