联接表和 aggregation/sub 查询
Joining tables and aggregation/sub queries
我有 2 个 table 如下所示。
表 1
Order ID
Item_code
Sales_Price
Qty_ordered
Total
Qty shipped
1000
111
10
5
1
1000
222
20
10
0
2
1000
333
30
15
0
0
我有另一个 table 只存储发票金额的详细信息(即我们运送了多少)
表 2(因为我们只运送 10x1 和 20x2 = 50 美元)
Order ID
Invoice_total
1000
我写了下面的查询,
select T1.Order_ID,
sum(T1.Qty_Ordered) as Qty_Ordered,
sum(T1.Total) as Total_Amt_ordered,
sum(T1.Qty_shipped) as Qty_Shipped,
sum(T2.Invoice_total)
from T1 join
T2 on T1.Order_ID = T2.Order_ID
此查询为我提供了以下输出(它向 T1 订单的所有行添加了 50 美元)。
Order ID
Qty_ordered
Total
Qty shipped
Invoice_total
1000
30
0
3
0
而现在,我希望输出为:
Order ID
Qty_ordered
Total
Qty shipped
Invoice_total
1000
30
0
3
(因为我们只发货了 50 美元)
我应该对查询进行哪些更改?
我知道我可以硬编码,但我的数据库有 1000 个订单和 1000 个半发货订单。我想跟踪所有订单的已装运 $(发票 $)。
如果我没理解错的话,你想要:
select T2.Order_ID, T2.Invoice_total,
sum(T1.Qty_Ordered) as Qty_Ordered,
sum(T1.Total) as Total_Amt_ordered,
sum(T1.Qty_shipped) as Qty_Shipped,
from T2 join
T1
on T1.Order_ID = T2.Order_ID
group by T2.Order_ID, T2.Invoice_total;
也就是不想聚合Invoice_total
。你只希望它是一个 group by
键。
我有 2 个 table 如下所示。
表 1
Order ID | Item_code | Sales_Price | Qty_ordered | Total | Qty shipped |
---|---|---|---|---|---|
1000 | 111 | 10 | 5 | 1 | |
1000 | 222 | 20 | 10 | 0 | 2 |
1000 | 333 | 30 | 15 | 0 | 0 |
我有另一个 table 只存储发票金额的详细信息(即我们运送了多少)
表 2(因为我们只运送 10x1 和 20x2 = 50 美元)
Order ID | Invoice_total |
---|---|
1000 |
我写了下面的查询,
select T1.Order_ID,
sum(T1.Qty_Ordered) as Qty_Ordered,
sum(T1.Total) as Total_Amt_ordered,
sum(T1.Qty_shipped) as Qty_Shipped,
sum(T2.Invoice_total)
from T1 join
T2 on T1.Order_ID = T2.Order_ID
此查询为我提供了以下输出(它向 T1 订单的所有行添加了 50 美元)。
Order ID | Qty_ordered | Total | Qty shipped | Invoice_total |
---|---|---|---|---|
1000 | 30 | 0 | 3 | 0 |
而现在,我希望输出为:
Order ID | Qty_ordered | Total | Qty shipped | Invoice_total |
---|---|---|---|---|
1000 | 30 | 0 | 3 |
(因为我们只发货了 50 美元)
我应该对查询进行哪些更改? 我知道我可以硬编码,但我的数据库有 1000 个订单和 1000 个半发货订单。我想跟踪所有订单的已装运 $(发票 $)。
如果我没理解错的话,你想要:
select T2.Order_ID, T2.Invoice_total,
sum(T1.Qty_Ordered) as Qty_Ordered,
sum(T1.Total) as Total_Amt_ordered,
sum(T1.Qty_shipped) as Qty_Shipped,
from T2 join
T1
on T1.Order_ID = T2.Order_ID
group by T2.Order_ID, T2.Invoice_total;
也就是不想聚合Invoice_total
。你只希望它是一个 group by
键。