我有两个表。
一张表记录了订单库存,有FK_stock和FK_orderNo
我想统计每个库存商品的订单数量。以下代码可以正确地执行此操作:
(1)
SELECT orderstock.FK_orderNo, Count(orderstock.FK_stock) AS CountOfFK_stock
FROM stock INNER JOIN orderstock ON stock.StockID = orderstock.FK_stock
GROUP BY orderdemo.FK_orderNo
但是,我想补充一点,只列出不易腐烂的库存元素 (stock.perishable=0)。所以像
SELECT orderstock.FK_orderNo, Count(orderstock.FK_stock) AS CountOfFK_stock
FROM stock INNER JOIN orderstock ON stock.stockID = orderstock.FK_stock
WHERE stock.perishable=0
GROUP BY orderstock.FK_orderNo
我如何访问与 FK_stock 相关的信息来完成这项工作?为此,当我尝试合并库存表中的信息时,每项库存都单独计算。
(1) 的结果
FK_OrderNo CountOfFK_Stock
9 10
104 8
105 3
106 10
107 8
108 10
109 11
110 9
期望的结果(类似的东西):
FK_OrderNo CountOfFK_Stock
9 7
104 8
105 3
106 4
107 7
108 2
109 11
110 6
最佳答案
我猜你正在寻找条件计数
将 where
子句过滤器移动到 Count Aggregate
并使计数聚合仅在 stock.perishable = 0
时计算记录。
SELECT orderdemo.fk_orderno,
Count(CASE
WHEN stock.perishable = 0 THEN 1
END) AS nonperishable_count
FROM stock
INNER JOIN orderdemo
ON stock.studentid = orderdemo.fk_stock
GROUP BY orderdemo.fk_orderno
Count
聚合也可以替换为 SUM
聚合。像这样
Sum(CASE
WHEN stock.perishable = 0 THEN 1
ELSE 0
END) AS nonperishable_count
关于mysql - 使用连接信息计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34397237/