1

さて、id、username、ratingの3つの列を持つ1つのデータベースがあります。

データベースは次のようになります。

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

SELECT ID、AVG(RATING)FROM THING GROUP BY ID

平均評価に条件が必要な場合は、各IDの平均評価を提供します。

于 2012-11-12T05:20:09.390 に答える