gpt4 book ai didi

sql - 如何编写SQL查询数据仓库事实表

转载 作者:行者123 更新时间:2023-12-05 01:47:50 24 4
gpt4 key购买 nike

在线卖家的数据库模型:

enter image description here

为了创建数据仓库,我按 http://bit.ly/1bOuOXQ 展平了表格

enter image description here

注意事实表中的数据变得重复(买家在他们的订单中购买了两件商品。)

enter image description here

为了获得所有收入的总和,我通常会这样写sql:

select sum(OrderTotal) from OrderFact

sql 在原始 OLTP 表上可以正常工作,但现在我正在查询一个 OLAP 数据仓库,它有非规范化的数据,现在这种类型的 sql 会产生不正确的结果。

总收入查询应返回 $152.60。

如何修复sql以正确查询事实表?

最佳答案

如果您无法获得总和或订单等基本信息,那么您的事实表设计很差。您所谓的“OrderFact”实际上是“LineItemFact”。如果它是“订单事实”,则给定的订单只会在一行中。

如果将其设计为 LineItemFact,则税款将位于单独的行中,您可以这样做:

select sum(LineItemTotal)
from OrderFact

如果没有,您可以使用“LineItemNumber 来枚举每个订单的行。然后您可以:

select sum(OrderTotal)
from OrderFact
where LineItemNumber = 1;

根据您的结构,您可以:

select sum(OrderTotal)
from (select OrderId, max(OrderTotal) as OrderTotal
from OrderFact
group by OrderId
) o

关于sql - 如何编写SQL查询数据仓库事实表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21506968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com