PostgreSQL实现按客户分组提取不同Tier区间的Value最大值
PostgreSQL 分组聚合实现指定Tier区间的Value最大值统计
原始数据表
Client Tier Value A 1 10 B 2 20 C 1 30 B 3 40 A 2 40 B 1 50 C 2 60 A 3 70 A 4 50
期望查询结果
Client max(1,2) Value max(3,4) Value A 40 70 B 50 40
实现SQL
SELECT Client, MAX(CASE WHEN Tier IN (1, 2) THEN Value END) AS "max(1,2) Value", MAX(CASE WHEN Tier IN (3, 4) THEN Value END) AS "max(3,4) Value" FROM your_table_name GROUP BY Client HAVING MAX(CASE WHEN Tier IN (1, 2) THEN Value END) IS NOT NULL AND MAX(CASE WHEN Tier IN (3, 4) THEN Value END) IS NOT NULL;
代码说明
- 用
CASE WHEN筛选对应Tier区间的Value,搭配MAX聚合函数计算每个Client在该区间的最大值,无符合条件数据时返回NULL GROUP BY Client按客户维度分组统计HAVING子句过滤掉任意一个区间无有效数据的Client(比如示例中的C,没有Tier3/4的数据,因此被排除)
内容的提问来源于stack exchange,提问作者rohan
相关产品推荐
相关产品推荐

