添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 如果您不使用该 OVER 子句, COUNT 则按聚合函数计算。在这种情况下,聚合查询必须包含 GROUP BY 子句 基于 ROWTIME 将流分组为有限行的单调表达式。否则,该组是无限流,查询将永远不会完成,也不会发出任何行。有关更多信息,请参阅 聚合函数

  • 使用 GROUP BY 子句的窗口查询在翻滚窗口中处理行。有关更多信息,请参阅 滚动窗口(使用 GROUP BY 的聚合)

  • 如果您使用该 OVER 子句, COUNT 则计算为分析函数。有关更多信息,请参阅 分析函数

  • 使用 OVER 子句的窗口查询在滑动窗口中处理行。有关更多信息,请参阅 滑动窗口

    滚动窗口式查询

    COUNT( number-expression ) ... GROUP BY monotonic-expression | time-based-expression

    滑动窗口式查询

    COUNT(* | ALL number-expression ) OVER window-specification

    对所有行进行计数。

    计算所有行。 ALL 是默认值。

    number-expression

    指定针对聚合中的每一行计算的值表达式。

    OVER window-specification

    将数据流中的记录除以时间范围间隔或行数。窗口规范定义流中记录的划分方式 (按时间范围间隔或行数)。

    单调表达分 组 | time-based-expression

    基于分组表达式的值为记录分组,从而针对在所有列中具有相同值的每组行返回一个摘要行。

    示例数据集

    以下示例基于样本库存数据集,该数据集是 Amazon Kinesis Analytics 开发人员指南 入门 的一部分。要运行每个示例,您需要一个包含样本股票行情输入流的 Amazon Kinesis Analytics 应用程序。要了解如何创建分析应用程序和配置示例股票行情输入流,请参阅 Amazon Kinesis Analytics 开发者指南中的 入门 指南

    具有以下架构的示例股票数据集。

    (ticker_symbol VARCHAR(4), sector VARCHAR(16), change REAL, price REAL)

    示例 1:使用 GROUP BY 子句返回值的数目

    在此示例中,聚合查询有一个 GROUP BY 子句 ROWTIME ,该子句将流分组为有限的行。随后,从 COUNT 子句返回的行计算 GROUP BY 函数。

    使用 STEP(推荐)

    CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( ticker_symbol VARCHAR(4), count_price DOUBLE); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM ticker_symbol, COUNT(Price) AS count_price FROM "SOURCE_SQL_STREAM_001" GROUP BY ticker_symbol, STEP("SOURCE_SQL_STREAM_001".ROWTIME BY INTERVAL '60' SECOND);

    使用 FLOOR

    CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( ticker_symbol VARCHAR(4), count_price DOUBLE); -- CREATE OR REPLACE PUMP to insert into output CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM ticker_symbol, COUNT(Price) AS count_price FROM "SOURCE_SQL_STREAM_001" GROUP BY ticker_symbol, FLOOR("SOURCE_SQL_STREAM_001".ROWTIME TO MINUTE);

    上一示例输出的流与以下内容类似。

    在此示例中,该 OVER 子句将分区流中的记录除以前 '1' 小时的时间范围间隔。随后,从 COUNT 子句返回的行计算 OVER 函数。

    CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( ticker_symbol VARCHAR(4), count_price DOUBLE); CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM ticker_symbol, COUNT(price) OVER ( PARTITION BY ticker_symbol RANGE INTERVAL '1' HOUR PRECEDING) AS count_price FROM "SOURCE_SQL_STREAM_001"

    上一示例输出的流与以下内容类似。

    Amazon Kinesis Analytics 不支持 COUNT 函数的 FILTER 子句,也不支持 COUNT DISTINCT 在聚合函数或分析函数中使用。有关聚合和分析函数的更多信息,请参见 聚合函数 分析函数 。此功能偏离了 SQL:2008 标准。

    当用作分析函数时,如果正在评估的窗口不包含任何行,则 COUNT 返回零。有关更多信息,请参阅 分析函数 :对于窗口内与输入行匹配的分区不包含任何行的 PARTITION BY 子句,COUNT 还会返回零。有关 PARTITION BY 的更多信息,请参阅 WINDOW 子句 (滑动窗口)

    COUNT 忽略一组值或数值表达式中的空值。例如,以下各项返回值 3:

    • COUNT(1, 2, 3) = 3

    • COUNT(1,null, 2, null, 3, null) = 3