我有一个包含三列(ItemNo,Size,StockBalance)的表,如下所示:
A1,XS,2
A1,S,0
A1,M,3
A1,L,3
A1,XL,0
A2,XS,5
A2,S,0
A2,M,1
A2,L,3
A2,XL,6
如果我跑
SELECT ItemNo,sum(StockBalance),COUNT(*)FROM StockTable GROUP BY ItemNo
我得到了
A1,8,5 A2,15,5
这很棒,因为我知道我有多少独特物品,每件物品的总库存位置以及每件物品的尺寸数量。
我还想要的是库存中的尺寸数量,即A1为3,而A2则为4。
然后我可以得到一个最终的列,它是库存中的大小百分比,即对于A1,它将是3/5 = 0.6,对于A2,它将是4/5 = 0.8
谢谢!
答案 0 :(得分:0)
以下查询应该
SELECT
ItemNo, SUM(StockBalance) AS Balance, COUNT(*) as Count, SUM(IF(StockBalance > 0, 1, 0)) AS Size
FROM StockTable
GROUP BY ItemNo
答案 1 :(得分:0)
你可以尝试
SELECT ItemNo, sum(StockBalance) Total, COUNT(*) Sizes,
COUNT(CASE WHEN StockBalance>0 THEN 1 END) SIZESinSTOCK
FROM StockTable GROUP BY ItemNo
这将仅考虑StockBalance> 0的记录。
要获得你可以做的最后一栏
SELECT *, 1.*SIZESinSTOCK/Sizes InStockPercent FROM (
SELECT ItemNo, sum(StockBalance) Total, COUNT(*) Sizes,
COUNT(CASE WHEN StockBalance>0 THEN 1 END) SIZESinSTOCK
FROM StockTable GROUP BY ItemNo) tmp
将1.*
转换为浮动数字需要SIZESinSTOCK
。否则你只能获得0或1作为结果。