A*******t 发帖数: 40 | 1 有两个表,一个是Inventory,一个是SaleHistory,靠SKU可join在一起。
Inventory
-------------------
SKU Stock DateIn
SC101 1 2010/03/10
SC101 1 2010/04/20
SC102 1 2011/02/03
...
...
SaleHistory
--------------------
SKU SONum DateSold
SC101 00201 2010/08/19
SC102 00202 2010/08/20
SC102 00203 2010/08/21
...
...
现需要这样一个Report来展示库存>10的所有SKU的销售情况
SKU UnitsLeft UnitsSold
SC101 2 1
SC102 1 2
...
虚心请教如何用SQL实现... 如果只有一个表一个Count就出来了。但是两个表joint在
一起,如果用下列Query,结果总是不对头:
SELECT i.sku, Count(i.sku) as UnitsLeft, Count(s.SONum) as UnitsSold
FROM Inventory as i, SalesHistory as s
WHERE i.sku = s.sku
Group by i.sku
Having Count(i.SKU) > 10
ORDER BY i.sku
多谢! |
B*****g 发帖数: 34098 | 2 先count,再join
【在 A*******t 的大作中提到】 : 有两个表,一个是Inventory,一个是SaleHistory,靠SKU可join在一起。 : Inventory : ------------------- : SKU Stock DateIn : SC101 1 2010/03/10 : SC101 1 2010/04/20 : SC102 1 2011/02/03 : ... : ... : SaleHistory
|
T****U 发帖数: 3344 | 3 inventory和sales join的业务逻辑是什么? sku都不是primary key, 那不成cross jo
in了吗?
你需要一个product_information的表过度一下
【在 A*******t 的大作中提到】 : 有两个表,一个是Inventory,一个是SaleHistory,靠SKU可join在一起。 : Inventory : ------------------- : SKU Stock DateIn : SC101 1 2010/03/10 : SC101 1 2010/04/20 : SC102 1 2011/02/03 : ... : ... : SaleHistory
|
T****U 发帖数: 3344 | 4 恩,北京mm说得对
看看这个行不行?
select sku, received-sales Unitsleft, sales UnitsSold
from ((select count(*) sales, sku
from salesHistory group by sku) join
(select count(*) received, sku
from inventory group by sku)
Using (sku))
Where (received-sales)>10
order by sku
【在 B*****g 的大作中提到】 : 先count,再join
|