如何在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
如果你需要总结你可以简单地总结了从一个子查询,将仅持有不同的值(或不同的对数值)不同的值。
所以,你可能需要
SELECT SUM(PaymentAmt) FROM
(SELECT PaymentAmt FROM tabl_a
GROUP BY PaymentId, PaymentAmt) distinct_payments;
这将给306结果虽然,治疗为ID 35和支付36分开。如果你真的想得到256,这将是没有任何链接到ID的不同付款的总和,然后使用GROUP BY PaymentAmt
来代替。
是 - >按付款方式和付款方式分组时,此功能完美无缺。而且,为了记录,我确实想要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 ║
╚═══════════╩══════════════╝
Upvote提供小提琴。荣誉。 :) –
嗯... SQLFiddle演示的确定upvote。这是一个非常酷的链接 - 不幸的是,那些不是我正在寻找的机器人(或结果)。 –
您是否在寻找sum
所有distinct amounts
,因为它得到的结果
SELECT
sum(TotalPayment)
FROM
(SELECT
distinct
PaymentAmt TotalPayment
FROM
tableName) t
可以也显示您所需的输出? –
50 + 50 + 52 + 54 + 100 = 306,你能解释一下,你如何计算得到256? – piotrm
数学不好?不知道我是如何总结出来的,诚实地说。我刚刚加在脑海里,忘了50年代中的一次。 –