gpt4 book ai didi

mysql - 如何根据mysql中的两列日期求和金额

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

我有一个 tbl_remit,我需要在其中获取最后一笔汇款。

我正在开发一个系统,其中我需要使用雇主最后一次汇款 x 12 来获取每个雇主的潜在收款。理想情况下,雇主应每月汇款一次。但在某些情况下,雇主会为新雇用的额外雇员再次缴纳当月的费用。我使用的Mysql语句是这样的。

SELECT Employer, MAX(AP_From) as AP_From, 
MAX(AP_To) as AP_To,
MAX(Amount) as Last_Remittance,
(MAX(Amount) *12) AS LastRemit_x12
FROM view_remit
GROUP BY PEN

结果

|RemitNo.|  Employer  |  ap_from  |   ap_to   | amount |
| 1 | 1 |2016-01-01 |2016-01-31 | 2000 |
| 2 | 1 |2016-02-01 |2016-02-28 | 2000 |
| 3 | 1 |2016-03-01 |2016-03-31 | 2000 |
| 4 | 1 |2016-03-01 |2016-03-31 | 400 |

通过执行该语句,我最终得到了错误的潜在集合。

What I've got:
400 - Last_Remittance
4800 - LastRemit_x12 (potential collection)

What I need to get:
2400 - Last_Remittance
28800 - LastRemit_x12 (potential collection)

非常感谢任何帮助。我没有团队参与这个项目。对于某些人来说这可能是一个新手问题,但对我来说这确实是一个复杂的难题。预先感谢您。

最佳答案

您想要过滤最后一个时间段的数据。因此,请考虑 where 而不是 group by。然后,您希望按雇主进行汇总。

这是一种方法:

SELECT Employer, MAX(AP_From) as AP_From, MAX(AP_To) as AP_To,
SUM(Amount) as Last_Remittance,
(SUM(Amount) * 12) AS LastRemit_x12
FROM view_remit vr
WHERE vr.ap_from = (SELECT MAX(vr2.ap_from)
FROM view_remit vr2
WHERE vr2.Employer = vr.Employer
)
GROUP BY Employer;

编辑:

为了提高性能,您需要在 view_remit(Employer, ap_from) 上建立索引。当然,这是假设 view_remit 实际上是一个 table 。 。 。这可能不太可能。

如果您想提高性能,您需要了解 View 。

关于mysql - 如何根据mysql中的两列日期求和金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41779643/

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