mysql - 通过加入 3 个表格计算百分比明智金额。还需要更改 INNER JOIN 以获取 COMMON 和 UNCOMMON 记录
问题描述
我知道这很长,但请多多包涵。我将加入 3 个表格来计算每个实体的在线百分比和现金金额。我尝试关注但不工作。任何人都可以帮助我吗?
我还需要替换 INNER JOIN 以便我可以从两个表中获取所有 COMMON 或 UNCOMMON 结果。
SELECT b.Entity_Name,
e.Percentage AS 'Entity (%)',
(100 - e.Percentage) AS 'Own (%)',
b.`No. of Invoice`,
b.`Total Invoice`,
p.`No. of Payment`,
p.`Online Payment`,
p.`Cash Payment`,
e.`Reseller (% Online)`,
e.`Own (% Online)`,
e.`Reseller (% Cash)`,
e.`Own (% Cash)`,
p.`Total Payment`
FROM (
SELECT Entity_Name,
COUNT(Customer_Nbr) AS `No. of Invoice`,
SUM(Invoice_Amount) AS `Total Invoice`
FROM mq_billing
GROUP BY Entity_Name
) b INNER JOIN (
SELECT COUNT(Customer_Nbr) AS 'No. of Payment',
Entity_Name,
SUM(CASE WHEN Payment_Mode = 'Online Payment' THEN Amount ELSE 0 END) AS `Online Payment`,
SUM(CASE WHEN Payment_Mode = 'Cash' THEN Amount ELSE 0 END) AS `Cash Payment`,
SUM(Amount) AS `Total Payment`
FROM mq_paymentlist
GROUP BY Entity_Name
) p ON b.Entity_Name = p.Entity_Name
INNER JOIN (
SELECT Entity_Name,
((SUM(CASE WHEN Payment_Mode = 'Online Payment' THEN Amount ELSE 0 END) * e.Percentage) / 100) AS `Reseller (% Online)`,
((SUM(CASE WHEN Payment_Mode = 'Online Payment' THEN Amount ELSE 0 END) * (100 - e.Percentage)) / 100) AS `Own (% Online)`,
((SUM(CASE WHEN Payment_Mode = 'Cash' THEN Amount ELSE 0 END) * e.Percentage) / 100) AS `Reseller (% Cash)`,
((SUM(CASE WHEN Payment_Mode = 'Cash' THEN Amount ELSE 0 END) * (100 - e.Percentage)) / 100) AS `Own (% Cash)`
FROM mq_entity
GROUP BY Entity_Name
) e on p.Entity_Name = e.Entity_Name
ORDER BY b.Entity_Name;
以下代码仅在尝试显示百分比时有效。
SELECT b.Entity_Name,
e.Percentage AS 'Entity (%)',
(100 - e.Percentage) AS 'Own (%)',
b.`No. of Invoice`,
b.`Total Invoice`,
p.`No. of Payment`,
p.`Online Payment`,
p.`Cash Payment`,
p.`Total Payment`
FROM (
SELECT Entity_Name,
COUNT(Customer_Nbr) AS `No. of Invoice`,
SUM(Invoice_Amount) AS `Total Invoice`
FROM mq_billing
GROUP BY Entity_Name
) b INNER JOIN (
SELECT COUNT(Customer_Nbr) AS 'No. of Payment',
Entity_Name,
SUM(CASE WHEN Payment_Mode = 'Online Payment' THEN Amount ELSE 0 END) AS `Online Payment`,
SUM(CASE WHEN Payment_Mode = 'Cash' THEN Amount ELSE 0 END) AS `Cash Payment`,
SUM(Amount) AS `Total Payment`
FROM mq_paymentlist
GROUP BY Entity_Name
) p ON b.Entity_Name = p.Entity_Name
INNER JOIN mq_entity e on p.Entity_Name = e.Entity_Name
ORDER BY b.Entity_Name;
解决方案
推荐阅读
- node.js - 无法在 Mongodb 中以 Json 格式保存数据
- python - 与 hyperopt 的评估和预测不同的结果度量
- ipaf - 我在安装 paf 时遇到错误
- android - 自定义网格布局 (Android)
- python - Skimage:如何将两个灰度图像组合成一个通道二图像
- vba - PowerPoint 拖放代码 - 影响多张幻灯片的修改
- reactjs - 如何在反应表中保存“显示/隐藏”状态?
- javascript - 使用 Node.js 在 axios 调用响应后导出值
- python - 将被调用的对象添加到表中
- python - 重新排列 Pandas 数据框