SELECT avg FROM SELECT avg

时间:2016-05-09 06:56:29

标签: sql oracle

我只是不知道如何使它工作,我如何从其他选择中选择平均值

select avg(avg(valoare)) from (select avg(valoare) from note 
where nr_matricol=111 group by ID_CURS) 

我也尝试了

  select avg(alias) from (select avg(valoare) as "alias" from note 
  where nr_matricol=111 group by ID_CURS) 

2 个答案:

答案 0 :(得分:1)

第二个查询基本上就是你想要的。但是,一旦开始在SQL中使用双引号作为标识符,这些标识符就会区分大小写:public void AddOrder(int BuyerID, int Price, string ArtPiece) 的名称与"alias"不同(因为aliasalias相同)。

因此,您需要在整个查询中使用双引号:

ALIAS

另一种选择是使用不需要引用的名称:

select avg("alias") 
from (
  select avg(valoare) as "alias" 
  from note 
  where nr_matricol=111 group by ID_CURS
) 

尽管Oracle不需要,但为派生表提供别名也是一种很好的编码风格。

select avg(avg_valoare) 
from (
  select avg(valoare) as avg_valoare
  from note 
  where nr_matricol=111 group by ID_CURS
) 

请注意,Oracle 支持表别名的select avg("alias") from ( select avg(valoare) as "alias" from note where nr_matricol=111 group by ID_CURS ) x --<<< here 关键字,因此您无法使用AS作为派生表别名。

答案 1 :(得分:1)

您可以使用以下查询。

select avg(alias) from 
      (select avg(valoare) as alias from note 
         where nr_matricol=111 group by ID_CURS) X

OR

select avg(avg(valoare)) as alias from note 
    where nr_matricol=111 group by ID_CURS X