繁体   English   中英

从具有mysql查询中选择不同的sumof

[英]select distinct sumof from mysql query with having

table structure 
=====================================================================
id |fee_amount|fee_paid|fee_type|fee_user|date         | Fee_for
=====================================================================
1  | 2000     | 500    | REG    | 105    | 01.02.2017  | FEB
-----------------------------------------------
2  | 2000     | 1000   | REG    | 105    | 03.02.2017  | FEB
-----------------------------------------------
3  | 2000     | 500    | REG    | 105    | 04.02.2017  | FEB
-----------------------------------------------
4  | 1000     | 500    | FEE    | 105    | 10.03.2017  | MAR
-------------------------------------------------------------
5  | 1000     | 500    | FEE    | 105    | 11.03.2017  | MAR
--------------------------------------------------------------
6  | 1000     | 1000   | FEE    | 105    | 13.03.2017  | APR

从上面我节省了付款细节

支付给一名学生上述部分款项的一部分

使用这个我需要获取总费用和总已付费用,余额需要支付

为此我用了

SELECT SUM(fee_amount) as fee, SUM(fee_paid) as paid ,fee_type
FROM tbl_fee A WHERE fee_user='105'
                group by fee_type
                having SUM(fee_amount)!=(SUM(fee_paid)

但是它越来越

6000  | 2000 | REG
2000  | 1000 | FEE

我需要得到

2000  | 2000 | REG
1000  | 1000 | FEE

只需使用此查询即可获得所需的结果

SELECT fee_amount as fee, SUM(fee_paid) as paid ,fee_type FROM tbl_fee A WHERE fee_user='105' group by fee_type

如果您不希望对fee_amount字段求和,则只需不对其求和,而是将其包含在group by子句中,或使用any_value()函数使查询符合sql标准:

SELECT fee_amount as fee, fee_type, SUM(fee_paid) as paid
FROM tbl_fee A
WHERE fee_user='105'
group by fee_type, fee_amount

显然,这些解决方案假定对于所有用户而言, fee_amount中的fee_amount相同。 如果fee_amount在费用类型和用户内可以不同,那么您需要指定如何处理这种情况。

暂无
暂无

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

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