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
相关推荐
陌上丨10 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
AI_567810 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
ccecw10 小时前
Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错
数据库·mysql
JH307310 小时前
达梦数据库与MySQL的核心差异解析:从特性到实践
数据库·mysql
数据知道11 小时前
PostgreSQL 核心原理:如何利用多核 CPU 加速大数据量扫描(并行查询)
数据库·postgresql
麦聪聊数据12 小时前
Web 原生架构如何重塑企业级数据库协作流?
数据库·sql·低代码·架构
未来之窗软件服务12 小时前
数据库优化提速(四)新加坡房产系统开发数据库表结构—仙盟创梦IDE
数据库·数据库优化·计算机软考
Goat恶霸詹姆斯13 小时前
mysql常用语句
数据库·mysql·oracle
大模型玩家七七14 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
曾经的三心草14 小时前
redis-9-哨兵
数据库·redis·bootstrap