【问题标题】:SQL: windowed aggregate functions for DB2 iSeriesSQL:DB2 iSeries 的窗口聚合函数
【发布时间】:2013-11-12 23:49:47
【问题描述】:

count 不是 iSeries 上 SQL DB2 行分区的有效聚合函数吗?

此查询有效:

select ROW_NUMBER() over (partition by COL1, COL2 order by COL3 asc)
from MyTable

而且这个查询给出了一个语法错误:

select COUNT(1) over (partition by COL1, COL2)
from MyTable

错误信息指向partition这个词前的括号:

[消息 SQL0401] 令牌 ( 不是有效令牌。有效令牌的部分列表是 , FROM INTO。

我知道我可以重写查询以避免行分区,但我想知道为什么这不起作用。

【问题讨论】:

    标签: sql db2 ibm-midrange


    【解决方案1】:

    不,COUNT()type of function as ROW_NUMBER() 不同。

    如果你想要每个 (col1,col2) 的行数,那么你可以简单地使用

    select COL1, COL2, count(*)
      from MyTable
      group by col1, col2
    

    【讨论】:

    • 我读对了吗:唯一允许的函数是RANKDENSE_RANKROW_NUMBER?聚合函数都不起作用?
    • 这些是唯一使用“OLAP”(分区覆盖)语法的函数。聚合函数工作正常。 (见第一个链接)
    • 感谢您的回答和参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    相关资源
    最近更新 更多