如何重用我刚刚在同一select
创建的变量(列)?
create table t2
as select count(bar) as foo, foo * log(foo) as ifoo
from t1
group by bar;
正如您所看到的,我正在创建t2.foo
(bar
中t1
的每个值出现的次数)我希望使用该值来计算t2.ifoo
}。
答案 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
在这里是什么,但没关系,你只需要确保它存在于子查询中。