如何在MySQL中正确求和2列查询

问题描述:

我很难根据一列值对一列不同值进行求和,这也需要区分。例如,我有:如何在MySQL中正确求和2列查询

Index PaymentID PaymentAmt PartPmtApplied 
    1  35  50   26 
    2  35  50   24 
    3  36  50   38 
    4  36  50   12 
    5  37  52   14 
    6  37  52   14 
    7  37  52   24 
    8  38  54   37 
    9  38  54   17 
10  39  100   100 

我使用的查询如下:

Select sum(paymentamt) from tbl_A where paymentid = 
      (select distinct paymentsid from tbl_A); 

所以,我认为我在做我的查询正确的,但是当我这样做,但它仍然凝聚了每一个值在PaymentAmt列中,即我总共收到564而不是256.

任何人都有更好的方式找到这个值?提前致谢。

感谢您的快速回复。但是,正如有人问,这里是我要找:

35 50 
36 50 
37 52 
38 54 
39 100 

总和= 256。所以,我应该返回一个值的256

+0

可以也显示您所需的输出? –

+1

50 + 50 + 52 + 54 + 100 = 306,你能解释一下,你如何计算得到256? – piotrm

+0

数学不好?不知道我是如何总结出来的,诚实地说。我刚刚加在脑海里,忘了50年代中的一次。 –

如果你需要总结你可以简单地总结了从一个子查询,将仅持有不同的值(或不同的对数值)不同的值。

所以,你可能需要

SELECT SUM(PaymentAmt) FROM 
    (SELECT PaymentAmt FROM tabl_a 
    GROUP BY PaymentId, PaymentAmt) distinct_payments; 

这将给306结果虽然,治疗为ID 35和支付36分开。如果你真的想得到256,这将是没有任何链接到ID的不同付款的总和,然后使用GROUP BY PaymentAmt来代替。

+0

是 - >按付款方式和付款方式分组时,此功能完美无缺。而且,为了记录,我确实想要306--我想我的大脑太累了,不能在我脑海中做简单的数学运算。再次感谢。不胜感激。 –

你要使用GROUP通过。

SELECT PaymentID, SUM(PaymentAmt) as PaymentTotal FROM tbl_A GROUP BY PaymentID; 

这将为每个唯一PaymentID分配一行,并带有相应的付款金额。干杯。

你可以在没有任何子查询的情况下做到这一点。只需在您的查询中使用GROUP BY即可。

SELECT PaymentID, SUM(PaymentAmount) TotalPayment 
FROM tabl_a 
GROUP BY PaymentID 

这会给你的PaymentID独特价值与PaymentAmount其计算总量。

输出

╔═══════════╦══════════════╗ 
║ PAYMENTID ║ TOTALPAYMENT ║ 
╠═══════════╬══════════════╣ 
║  35 ║   100 ║ 
║  36 ║   100 ║ 
║  37 ║   156 ║ 
║  38 ║   108 ║ 
║  39 ║   100 ║ 
╚═══════════╩══════════════╝ 
+0

Upvote提供小提琴。荣誉。 :) –

+0

嗯... SQLFiddle演示的确定upvote。这是一个非常酷的链接 - 不幸的是,那些不是我正在寻找的机器人(或结果)。 –

您是否在寻找sum所有distinct amounts,因为它得到的结果

SELECT 
    sum(TotalPayment) 
FROM 
(SELECT 
    distinct 
    PaymentAmt TotalPayment 
    FROM  
    tableName) t