显示包含所有可能维度的多维数据集PostgreSQL结果
我使用以下查询获取数据透视表的多维数据集结果:显示包含所有可能维度的多维数据集PostgreSQL结果,postgresql,cube,Postgresql,Cube,我使用以下查询获取数据透视表的多维数据集结果: SELECT client, shop, SUM (sales) FROM sales GROUP BY CUBE (client, shop) ORDER BY client, shop; 并获得一个输出: client shop sales null null 1000 null Shop A 400 null
SELECT
client,
shop,
SUM (sales)
FROM
sales
GROUP BY
CUBE (client, shop)
ORDER BY
client,
shop;
并获得一个输出:
client shop sales
null null 1000
null Shop A 400
null Shop B 600
Client A null 800
Client A Shop A 200
Client A Shop B 600
Client B null 200
Client B Shop A 200
请注意,客户B仅向A店销售
但我需要一个输出(添加最后一行),其中输出显示维度中所有可能的交点(客户、商店)。如何更改我的查询
client shop sales
null null 1000
null Shop A 400
null Shop B 600
Client A null 800
Client A Shop A 200
Client A Shop B 600
Client B null 200
Client B Shop A 200
Client B Shop B null
您需要查询
client
和shop
的笛卡尔积,并与表左键连接:
select
client,
shop,
sum(sales)
from (
select distinct client
from sales
) c
cross join (
select distinct shop
from sales
) s
left join
sales t using (client, shop)
group by
cube(client, shop)
order by
client, shop;
client | shop | sum
----------+--------+------
Client A | Shop A | 200
Client A | Shop B | 600
Client A | | 800
Client B | Shop A | 200
Client B | Shop B |
Client B | | 200
| Shop A | 400
| Shop B | 600
| | 1000
(9 rows)
如果您的客户和商店存储在其他表中,您可以使用这些表,而不是
selectdistinct
和CROSS-JOIN
s。