gpt4 book ai didi

MySQL 查询根据部分付款计算所欠租金

转载 作者:行者123 更新时间:2023-11-29 17:45:42 25 4
gpt4 key购买 nike

我可能可以通过 PHP 代码执行以下操作,但我觉得它很可能在 MySQL 中完成,所以只是寻找有人帮助我完成查询。

我有一个契约(Contract)表,其中定义了客户每月付款,例如每月 500 英镑。然后我有另一个名为租金的表,其中输入每个月的租金。每笔租金都有一个状态,称为“已付”、“未付”和“部分”。

到目前为止我的查询如下,我是否必须执行多个子查询,或者它们是一个简单的方法。

SELECT cc.property_id, cc.property_rent, r.order_total, r.order_status,  
SUM(CASE WHEN r.order_status = 'Partial' THEN cc.property_rent - r.order_total ELSE 0 END) AS partial_rent_owed
FROM t_customers_contract cc JOIN
t_customers_rent r
ON cc.customer_id = r.customer_id WHERE cc.property_id = 62 AND r.transaction_type = 'rent' AND
(r.date_created BETWEEN '2017-04-05' AND '2019-04-05')
GROUP BY cc.property_id

基本上,如果租金状况是部分的,则从通常情况中减去它,然后减去所欠的总和。

期望的结果是每个属性(property)所欠金额和已贡献金额的总和,如下输出:

property_id、total_rent_made、total_rent_owed

当前合约表结构及数据如下:

Contract table

当前租金表结构及数据如下:

enter image description here

如您所见,order_id 20 和 27 是部分付款,根据这些 ID 的契约(Contract),实际付款应为 750 和 700。

最佳答案

我已经成功解决了它,它是以下查询。如果有人可以改进它,很乐意接受基于性能或更干净的建议。

SELECT cc.property_id, 
SUM(CASE WHEN r.order_status = 'Partial' THEN (cc.property_rent - r.order_total) ELSE 0 END) AS partial_rent_owed
FROM t_customers_contract cc JOIN t_customers_rent r ON (cc.property_id = r.property_id)
WHERE cc.contract_id = r.contract_id
AND cc.customer_id = 7866
AND r.transaction_type = 'rent'
AND (r.date_created BETWEEN '2016-04-05' AND '2019-04-05')
GROUP BY cc.property_id

关于MySQL 查询根据部分付款计算所欠租金,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49836595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com