聚合函数支持FILTER过滤
功能描述
Vastbase在PG兼容模式下,聚合函数支持FILTER过滤的功能,即COUNT、SUM和AVG函数之后可以使用FILTER子句来起到过滤的作用,只有满足FILTER(WHERE)子句中条件的数据才会参与聚合操作。
注意事项
- 该功能仅在数据库兼容模式为PostgreSQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='PG')。
- 目前聚合函数仅支持COUNT、SUM和AVG函数。
语法格式
FILTER(WHERE filter_clause)
参数说明
filter_clause
过滤条件语句。
示例
1、创建测试表并插入数据。
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);
2、调用聚合函数并使用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)