繁体   English   中英

SQL用LEFT Join的两个不同的聚合函数

[英]SQL two different Aggregate functions with LEFT Join

如何通过LEFT连接返回两个具有不同条件的聚合函数?

我已经有这个了:

SELECT VehicleType.vehicleTypeName, COUNT(*) as SALE
FROM Transactions
LEFT JOIN VehicleType
ON Transactions.VehicleTypeID = VehicleType.vehicleTypeID
WHERE Transactions.isRefund = 0
GROUP BY VehicleType.vehicleTypeName

这将返回车辆总数

Name      | Sale
---------------
vehicle1  | 10
vehicle2  | 15

我想知道如何获得每辆车的净计数(车辆数作为销售量减去可退款车辆数)

Name      | NetCount
---------------
vehicle1  | 8
vehicle2  | 10

如果不是这样的话。

Name      | Sale | Refund
-------------------------
vehicle1  | 10   | 2
vehicle2  | 15   | 5

您可以将条件表达式相加来计算它:

SELECT VehicleType.vehicleTypeName, 
       sum(case when Transactions.isRefund = 0 then 1 else 0 end) as Sale,
       sum(case when Transactions.isRefund = 1 then 1 else 0 end) as Refund
FROM Transactions
     LEFT JOIN VehicleType ON Transactions.VehicleTypeID = VehicleType.vehicleTypeID
GROUP BY VehicleType.vehicleTypeName

您的第一个结果将是:

SELECT VehicleType.vehicleTypeName, 
       sum(case when Transactions.isRefund = 0 then 1 else -1 end) as NetCount
FROM Transactions
     LEFT JOIN VehicleType ON Transactions.VehicleTypeID = VehicleType.vehicleTypeID
GROUP BY VehicleType.vehicleTypeName

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM