PostgreSQL中如何创建含三类最大值的单行三列视图
创建单行三列汇总视图的PostgreSQL方案
可以用两种简洁的方法实现需求:
方法一:CASE语句结合聚合函数
通过MAX()搭配CASE条件判断,直接在单行返回三类最大值:
CREATE VIEW value_summary AS SELECT MAX(value) AS overall_max, MAX(CASE WHEN category = 1 THEN value END) AS category_1_max, MAX(CASE WHEN category = 2 THEN value END) AS category_2_max FROM your_table_name;
说明:
- 不符合
CASE条件的行返回NULL,不会干扰MAX函数的计算结果 - 记得把
your_table_name替换成实际的表名
方法二:FILTER子句(PostgreSQL 9.4+支持)
PostgreSQL专属的FILTER子句让聚合条件的写法更直观:
CREATE VIEW value_summary AS SELECT MAX(value) AS overall_max, MAX(value) FILTER (WHERE category = 1) AS category_1_max, MAX(value) FILTER (WHERE category = 2) AS category_2_max FROM your_table_name;
验证结果
执行SELECT * FROM value_summary;会得到如下数据:
| overall_max | category_1_max | category_2_max |
|---|---|---|
| 4 | 3 | 4 |
内容的提问来源于stack exchange,提问作者user2555515
相关产品推荐
相关产品推荐

