sql - SQL 中是否有一种方法可以在交叉加入列组合帐户后对值求和?
问题描述
我使用 SQL 来生成两列的所有可能组合,包括使用交叉连接的一列。但是,虽然我已经能够创建列组合,但我不确定如何相应地聚合每个组合的销售额:
以下是“样本表”中的数据:
Gender Generation Sales
Male Baby Boomer 30
Male Silent Gen. 40
Female Baby Boomer 70
Female Silent Gen. 20
这是我生成组合的方式:
with Gendertbl AS
(SELECT DISTINCT Gender FROM sampletable UNION select '' from sampletable),
with Generationtbl AS
(SELECT DISTINCT Generation from sampletable UNION select '' from sample table)
SELECT G1.Gender, G2.Generation
FROM sampletable G1
CROSS JOIN sampletable G2
这将创建:
Gender Generation
Male
Male Baby Boomer
Male Silent Gen.
Female
Female Baby Boomer
Female Silent Gen.
我将如何交叉表销售以仅考虑“男性”、“女性”和“男婴潮”?理想情况下,这将创建:
Gender Generation Sales
Male 100
Male Baby Boomer 30
Male Silent Gen. 40
Female 200
Female Baby Boomer 70
Female Silent Gen. 90
解决方案
大多数数据库支持grouping sets
,它允许:
select gender, generation, sum(sales)
from sample_table
group by grouping sets ( (gender, generation), (gender) );
这是在结果集中合并不同聚合级别的更简单方法。
推荐阅读
- excel - 如何复制而不丢失信息?
- php - PHP $filename - 期望参数 1 是资源错误
- for-loop - Jekyll 是否会受到 Shopify 的 Liquid 规范声明的 50 项 for-loop 最大值的影响?
- python - 使用 =HYPERLINK 和 XlsxWriter 换行文本
- c++ - 如何安装性能数据助手
- angular - http://localhost:4200/#/dashboard,额外的 '#' 在 url Angular 5
- vba - 带有变量工作簿名称的运行时错误 9
- c++ - 用于无矩阵稀疏求解器 CG 的 Eigen-3.3.5 上的 DiagonalPreconditioner 包装器
- r - 基于列名的子集列
- reactjs - 嵌套路由不适用于 React