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
相关推荐
Jerry.张蒙几秒前
SAP业财一体化实现的“隐形桥梁”-价值串
大数据·数据库·人工智能·学习·区块链·aigc·运维开发
无名修道院5 分钟前
DVWA 靶场搭建:Windows11(phpstudy 搭建)(步骤 + 截图 + 常见问题)
数据库·网络安全·渗透测试·靶场·php·dvwa·phpstudy
CodeAmaz2 小时前
MySQL 事务隔离级别详解
数据库·mysql·事务隔离级别
千寻技术帮2 小时前
10398_基于SSM的教学评价管理系统
数据库·mysql·毕业设计·ssm·教学评价
晨星3342 小时前
使用 IntelliJ IDEA 轻松连接 Java 与 MySQL 8 数据库
java·开发语言·数据库
PWRJOY3 小时前
【MySQL】使用mycli查看数据库的基本操作
数据库·mysql
SadSunset3 小时前
(16)Bean的实例化
java·数据库·笔记·spring
JIngJaneIL3 小时前
基于Java + vue干洗店预约洗衣系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
cui_win3 小时前
MySQL 压测实战:sysbench 从入门到精通
数据库·mysql·压测·sysbench
屋外雨大,惊蛰出没3 小时前
小白安装Redis
数据库·redis·缓存