2016-05-09 103 views
0

我只是不叩头如何使它工作,我如何可以选择从其他选择选择平均FROM选择平均

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) 
+0

添加一个字母'了'在年底,也将努力 – cha

回答

1

第二个查询的平均基本上就是你想要的。但是,一旦您开始在SQL中使用双引号标识符,这些标识符就会区分大小写:"alias"是与alias不同的名称(因为aliasALIAS相同)。

所以你需要在整个查询中使用双引号:

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

另一种选择是使用不需要引用一个名字:

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 

注意,Oracle不会支持AS关键字为表的别名,所以你不能派生表的别名使用) as x

+2

由于它是甲骨文你可以简单地窝聚集:-)'选择AVG(AVG(valoare))从注意 其中nr_matricol = 111组由ID_CURS'(当然,我实际上永远不会推荐这个) – dnoeth

+0

@dnoeth:一个权利。我总是忘记这一点。 –

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