【问题标题】:Average of a Column Related to Another Column in OracleOracle 中与另一列相关的列的平均值
【发布时间】:2012-11-12 05:06:27
【问题描述】:

好的,所以我有一个包含三列的数据库: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;

但结果什么也没显示。代码有什么问题?

【问题讨论】:

    标签: sql database oracle average


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      选择 ID,平均(评级) 从事物 按 ID 分组

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-11
        • 2015-01-17
        • 1970-01-01
        • 1970-01-01
        • 2021-08-19
        相关资源
        最近更新 更多