如何在同一个select语句中使用新创建的变量?

时间:2013-12-19 18:59:24

标签: sql

如何重用我刚刚在同一select创建的变量(列)?

create table t2
as select count(bar) as foo, foo * log(foo) as ifoo
from t1
group by bar;

正如您所看到的,我正在创建t2.foobart1的每个值出现的次数)我希望使用该值来计算t2.ifoo }。

2 个答案:

答案 0 :(得分:1)

您需要在第二列中重复相同的功能

create table t2 as 
  select count(*) as foo, 
         count(*) * log(count(*)) as ifoo
  from t1
  group by bar;

(注意 - 也许你打算在这里创建一个视图,或者只是一个查询,但这不是创建表的有效语法。虽然也适用相同的逻辑 - 你不能使用列的别名在同一语句中引用自身,逻辑必须重复。)

答案 1 :(得分:1)

一种可能的方法是:

create table t2
as
    select foo, foo * log(foo) as ifoo
    from (
        select count(*) as foo, bar
        from t1
    ) q
    group by bar;

我不知道bar在这里是什么,但没关系,你只需要确保它存在于子查询中。

相关问题