带计数、平均列的Oracle SQL视图

带计数、平均列的Oracle SQL视图,sql,oracle,view,inner-join,average,Sql,Oracle,View,Inner Join,Average,我有3张桌子,项目,项目和类别。项目和项目类别在项目id中链接,项目类别和类别在类别id上链接 我正在创建一个视图,其中列出类别的ID和名称、每个类别中的项目数量,并计算该类别中所有项目的平均租金 我所有的代码似乎都能工作,除了AVG_RATE,它似乎只是给出了速率(而不是每个类别的平均速率)。有什么建议吗 CREATE VIEW V_CATEGORY AS SELECT DISTINCT category.category_id, category.name, (SELE

我有3张桌子,项目,项目和类别。项目和项目类别在项目id中链接,项目类别和类别在类别id上链接

我正在创建一个视图,其中列出类别的ID和名称、每个类别中的项目数量,并计算该类别中所有项目的平均租金

我所有的代码似乎都能工作,除了AVG_RATE,它似乎只是给出了速率(而不是每个类别的平均速率)。有什么建议吗

CREATE VIEW V_CATEGORY AS   
    SELECT DISTINCT category.category_id, category.name,
    (SELECT COUNT(*) FROM item_category 
        WHERE item_category.category_id = category.category_id) 
        AS items_in_category, 
    (SELECT AVG(item.rate) FROM item_category 
        WHERE item_CATEGORY.item_id = item.item_id 
        GROUP BY item_category.category_id) 
        AS avg_rate
        FROM category
    INNER JOIN item_category ON category.category_id = item_CATEGORY.category_id
    INNER JOIN item ON item_category.item_id = item.item_id;

尝试这样编写
选择

SELECT 
  category.category_id, 
  category.name,
  COUNT(item.item_id) as items_in_category,
  AVG(item.rate) as avg_rate
FROM
  category
INNER JOIN 
  item_category ON category.category_id = item_CATEGORY.category_id
INNER JOIN 
  item ON item_category.item_id = item.item_id
GROUP BY
  category.category_id, 
  category.name

谢谢不幸的是,当我试图用select语句创建视图时,由于“ORA-00937:没有一个组函数”而失败。@reallybadatmath,我忘记添加GROUPBY子句…现在应该可以工作了。就像一个符咒。非常感谢!