Mysql 如何计算SQL SUM函数中求和的行数?

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

以下是我的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 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中实现这一点。不过,我通常会尽量避免在更高层次的逻辑中这样做,这就是问题所在。无论如何,谢谢你的回答:)