6.postgresql--grouping()

sql 复制代码
CREATE TABLE sales (
    brand VARCHAR NOT NULL,
    segment VARCHAR NOT NULL,
    quantity INT NOT NULL,
    PRIMARY KEY (brand, segment)
);

 INSERT INTO sales (brand, segment, quantity)
VALUES
    ('ABC', 'Premium', 100),
    ('ABC', 'Basic', 200),
    ('XYZ', 'Premium', 100),
    ('XYZ', 'Basic', 300);

union all的实现

sql 复制代码
select brand,segment,sum(quantity) from sales group by brand,segment
union all
select brand,null,sum(quantity) from sales group by brand
union all
select null,segment,sum(quantity) from sales group by segment
union all
select null,null,sum(quantity) from sales ;

grouping sets实现

sql 复制代码
 select coalesce (brand,'所有品牌') brand,coalesce(segment,'所有类型') segment,sum(quantity) from sales  
   group by grouping sets((brand,segment),(brand),(segment),())

pg既然提供了grouping sets,就提供了对应了对应的grouping()函数,用来判断是否该纬度在该指标统计中是否被用到

用到,返回0

没用到,返回1

sql 复制代码
   select 
	grouping(brand) as brand_used,
	grouping(segment) as segment_used,
  brand,
  segment,
  sum(quantity) 
from sales
group by grouping sets((brand,segment),(brand),(segment),())
having grouping(brand) = 1
相关推荐
郭俊强2 分钟前
nestjs 连接redis
数据库·redis·缓存
海边捡石子10 分钟前
postgress数据迁移gaussdb注意事项
数据库
chen_note23 分钟前
Redis数据持久化——RDB快照和Aof日志追加
java·数据库·mybatis·持久化·aof·rdb
携欢44 分钟前
PortSwigger靶场之SQL injection with filter bypass via XML encoding通关秘籍
xml·数据库·sql
GBASE1 小时前
GBASE南大通用技术分享:GBase 8s数据库Q转义功能解析(上)
数据库
闲人编程1 小时前
PyQt6 进阶篇:构建现代化、功能强大的桌面应用
数据库·python·oracle·gui·脚本·pyqt6·软件
speop1 小时前
【datawhale组队学习】RAG技术 -TASK05 向量数据库实践(第三章3、4节)
数据库·学习
EnigmaCoder1 小时前
【Linux】用户与用户组管理
linux·运维·服务器·数据库
工业甲酰苯胺2 小时前
Redis支持事务吗?了解Redis的持久化机制吗?
数据库·redis·bootstrap
NineData2 小时前
NineData 最新发布 SQL Server 双向实时同步功能
数据库·后端·架构