YashanDB COUNT函数

52 阅读2分钟

COUNT函数按给定参数expr统计记录行数,本函数返回一个BIGINT的数值,且永远不会返回NULL。

在单行计算中,当expr的值为NULL时,函数返回0。

在多行计算中,当expr为字面量、变量、常量时,函数统计的是所有行,包括空行。否则,函数将忽略expr值为空的行,当所有行均为空时,计算结果为0。

聚集函数不可嵌套,因此expr为除聚集函数之外的其他通用表达式,其类型可以是UDT以外的任意数据类型。

*

表示统计所有的行,包括空行。

DISTINCT

表示将表达式结果进行重复过滤,统计的是所有不重复的非空行。

ALL

默认值,表示不对表达式结果进行重复过滤,统计的是所有非空行。

示例


SELECT COUNT(1) res FROM branches;
                  RES

                   12
  

SELECT COUNT(area_no) res FROM branches;
                  RES

                   10
  

SELECT COUNT(DISTINCT area_no) res FROM branches;
                  RES

                    4

Copied!

OVER

当指定OVER关键字时,COUNT将作为窗口函数,并支持滑动窗口,返回多行的统计行数。

analytic_clause

窗口函数通用语法。

示例


SELECT year,month,branch,revenue_total FROM finance_info;
YEAR  MONTH BRANCH REVENUE_TOTAL 

2001  01    0201            2888
2021  01    0201           28888
2021  01    0101           38888
2021  02    0101           37778


SELECT year,month,
COUNT(revenue_total) OVER (PARTITION BY year ORDER BY month) toall
FROM finance_info;
YEAR  MONTH                 TOALL

2001  01                        1
2021  01                        2
2021  01                        2
2021  02                        3


SELECT year,month,
COUNT(revenue_total) OVER (PARTITION BY year ORDER BY month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) tonow
FROM finance_info;
YEAR  MONTH                 TONOW 

2001  01                        1
2021  01                        1
2021  01                        2
2021  02                        3

Copied!