VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

聚合函数支持FILTER过滤

功能描述

Vastbase在PG兼容模式下,聚合函数支持FILTER过滤的功能,即COUNT、SUM和AVG函数之后可以使用FILTER子句来起到过滤的作用,只有满足FILTER(WHERE)子句中条件的数据才会参与聚合操作。

注意事项

  • 该功能仅在数据库兼容模式为PostgreSQL时能够使用(即创建DB时DBCOMPATIBILITY='PG'),在其他数据库兼容模式下不能使用该特性。

  • 目前聚合函数仅支持COUNT、SUM和AVG函数。

  • 支持的版本:

    • V2.2 Build 10(Patch No.14)及以上补丁版本。

    • V2.2 Build 15及以上版本。

语法格式

FILTER(WHERE filter_clause) 

参数说明

filter_clause

过滤条件语句。

示例

1、创建兼容PostgreSQL的库db_pg,并进入。

CREATE DATABASE  db_pg  DBCOMPATIBILITY=  'PG';
\c  db_pg

2、创建测试表并插入数据。

CREATE TABLE tab_1172072 (c_id int, c_name varchar(10), c_store number);
INSERT INTO tab_1172072 VALUES(101, 'Red', 100);
INSERT INTO tab_1172072 VALUES(102, 'Green', 200);
INSERT INTO tab_1172072 VALUES(103, 'Yellow', 300);
INSERT INTO tab_1172072 VALUES(101, 'Red', 120);
INSERT INTO tab_1172072 VALUES(101, 'Red', 200);
INSERT INTO tab_1172072 VALUES(103, 'Yellow', 50);
INSERT INTO tab_1172072 VALUES(103, 'Yellow', 80);
INSERT INTO tab_1172072 VALUES(102, 'Green', 20);
INSERT INTO tab_1172072 VALUES(101, 'Red', 100);
INSERT INTO tab_1172072 VALUES(102, '', 200);
INSERT INTO tab_1172072 VALUES(103, 'Yellow');
INSERT INTO tab_1172072 VALUES(101, null, 120);
INSERT INTO tab_1172072 VALUES(101, 'Red', null);
INSERT INTO tab_1172072 VALUES(103, null, 50);
INSERT INTO tab_1172072 VALUES(103, '', 80);
INSERT INTO tab_1172072 VALUES(102, 'Green', 20);

3、调用聚合函数并使用filter子句过滤。

select count(*) filter( where c_id = 101) from tab_1172072 where c_id >= 101;
select sum(c_id) filter( where c_id = 101) from tab_1172072 where c_id >= 101;

返回结果分别为:

 count
-------
     6
(1 row)

 sum
-----
 606
(1 row)