在Teradata中,我想要做的是通过保留聚合值并从聚合值计算新值来创建两个聚合值。
我做了这个简单的查询
select
a.*,
def / n as derived_dr
from
(select
obsdate
, sum(def) as def
, count(*) as n
from
some_table
group by obsdate) as a;
但在SAS / SQL中我可以做例如
select
a.*
, sum(def) as def
, count(*) as n
, def / n as derived_dr
from
some_table as a;
这简单易懂。但是,如果我在Teradata中尝试上述代码,则会出现错误
选定的非聚合值必须是关联组的一部分
我原来的Teradata解决方案是实现这一目标的最佳方式吗?我正在寻找Teradata中最合适的方法,我认为应该有一个不使用子查询的解决方案。
答案 0 :(得分:0)
在同一级别混合详细信息和聚合是Teradata / Standard SQL中Windowed Aggregate Functions的任务:
sum(def) over () -- global sum
sum(def) over (partition by obsdate) -- group sum, similar to GROUP BY