我有两个桌子,
User_packages(id,customer_id,total,vat,government_tax )
Payments(package_id,amount)
一个User_packages(假日包)可以支付许多款项。这意味着总金额可以分期付款。
我的目标是显示User_packages ID和客户支付的百分比金额。 和
总计=总计+增值税+政府税
User_packages
id | customer_id | total | vat | government_tax
1 | 1 | 2500 |100 | 50
2 | 2 | 4500 |100 | 50
3 | 1 | 5000 |200 |100
付款
package_id | amount
1 | 500
1 | 2000
3 | 5000
3 | 300
我期望的结果将会
package_id | payment percentage
1 | 94
2 | 0
3 | 100
如何使用MYSQL实现此目的? 我到目前为止所做的就是加入查询
SELECT User_packages.id,Payments.amount FROM booking_widget.User_packages
left join Payments on User_packages.id = Payments.package_id;
我正在使用服务器版本:5.7.24-0ubuntu0.18.04.1(Ubuntu)
答案 0 :(得分:1)
您可以在下面尝试-
SELECT User_packages.id,(coalesce(amt,0)*100.0)/(total+Vat+government_tax) as percentage
FROM booking_widget.User_packages
left join
(select package_id,sum(amount) as amt from Payments group by package_id) as pay
on User_packages.id = pay.package_id;
答案 1 :(得分:1)
此查询将为您提供所需的结果:
SELECT u.id, COALESCE(ROUND(p.amount / (u.total + u.vat + u.government_tax) * 100), 0) AS payment_percentage
FROM user_packages u
LEFT JOIN (SELECT package_id, SUM(amount) AS amount
FROM payments
GROUP BY package_id) p ON p.package_id = u.id
输出:
id payment_percentage
1 94
2 0
3 100
答案 2 :(得分:0)
尝试一下:
SELECT User_packages.id,(Amounts.total + User_packages.vat + User_packages.government_tax) as 'payment percentage'
FROM booking_widget.User_packages
JOIN (SELECT package_id, sum(amount) as total FROM Payments GROUP BY package_id) as Amounts
ON User_packages.id = Amounts.package_id;