Mysql 如何计算SQL SUM函数中求和的行数?
以下是我的SQL查询的特定部分:Mysql 如何计算SQL SUM函数中求和的行数?,mysql,sql,Mysql,Sql,以下是我的SQL查询的特定部分: SELECT pir.paymentInstrumentItemID AS id, SUM(pir.priceChange) AS priceSum, pir.clientInfoID AS clientID, IFNULL(SUM(pir.costChange), 0) AS selfPrice, pir.paymentInstrumentItemID FROM paymentInstrumentRegi
SELECT pir.paymentInstrumentItemID AS id,
SUM(pir.priceChange) AS priceSum,
pir.clientInfoID AS clientID,
IFNULL(SUM(pir.costChange), 0) AS selfPrice,
pir.paymentInstrumentItemID
FROM paymentInstrumentRegister as pir
GROUP BY pir.paymentInstrumentItemID
我需要做的是计算第一个SUM函数中分组的行的数量,并从中生成CASE语句,如下所示:
SUM(CASE WHEN amtRows = 1 THEN 0 ELSE pir.priceChange) as priceSum
所以基本上,只要有一行,我不需要这个值,但只要有两行或更多行,我就需要它们的和
非常感谢您的反馈。我认为最好的选择是在查询中添加
COUNT()
,然后让编程语言来完成其余的工作,但是如果您确实需要通过MySQL来完成这项工作:
SELECT
id,
(CASE WHEN amtRows = 1 THEN 0 ELSE priceSum) as priceSum,
amtRows,
clientID,
selfPrice,
paymentInstrumentItemID
FROM (
SELECT
pir.paymentInstrumentItemID AS id,
SUM(pir.priceChange) AS priceSum,
COUNT(pir.priceChange) as as amtRows,
pir.clientInfoID AS clientID,
IFNULL(SUM(pir.costChange),0) AS selfPrice,
pir.paymentInstrumentItemID
FROM
paymentInstrumentRegister as pir
GROUP BY
pir.paymentInstrumentItemID
) tmp
count(pir.priceChange)?您不能只添加
count(…)作为数量,
并执行编程语言rest吗?按参数对组进行计数。您可以使用将行作为一个整体排除。我仍然不太擅长SQL,基本上我需要使用count(pir.PaymentInstrumentId)要获得行数,有没有办法将内部查询改为外部查询,即在SUM函数内部?我不想破坏它设置的完整性。对不起,我想问的是,是否可以在SUM函数中计算行数?@nainy否。另一种解决方案效率较低LEFT JOIN
子查询。难道你不能用你使用的编程语言来做吗?我猜我不得不通过选择器在PHP中做这件事,因为我的代码中有太多的东西需要改变,才能在SQL中实现这一点。不过,我通常会尽量避免在更高层次的逻辑中这样做,这就是问题所在。无论如何,谢谢你的回答:)