【问题标题】:How to improve SQL Teradata with OVER PARTITION BY如何使用 OVER PARTITION BY 改进 SQL Teradata
【发布时间】:2019-07-16 20:39:26
【问题描述】:

我有一个超过 7 列的查询,其中包含一些 counts() 和 sum() 值,我的速度非常慢,然后我尝试使用 OVER PARTITION BY ,但在结果表中出现错误“选择的非聚合值必须是关联组的一部分”。

这是查询:

insert into  SQUEMA.TABLE_B
select 
SUBSTR(cast(date as char(6)) ,1,4) ||'-'|| SUBSTR(cast(date as char(6)) ,5,6) as date ,
column1,
column2,
column3,
.
.
.
.
column7,
count(column8) OVER (PARTITION BY date, column1,...,column7) as column8
SUM(column9) OVER(ORDER BY date ) as column9
from  SQUEMA.TABLE_A tb 
where tb.date between '201711' and '201812'
group by date, column1,...,column7;

错误

选定的非聚合值必须是关联组的一部分

【问题讨论】:

  • date 是一个整数 yyyymm 并且您想将其格式化为 yyyy-ddTrim(date (FORMAT '9999-99'))
  • 谢谢你,工作:)

标签: sql teradata


【解决方案1】:

我相信你想要:

sum(count(column8)) OVER (PARTITION BY date, column1,...,column7) as column8
sum(sum(column9))) OVER (ORDER BY date ) as column9

这就是你如何使用聚合的窗口函数。

【讨论】:

  • 谢谢它的帮助。
猜你喜欢
  • 2021-12-15
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多