【发布时间】:2020-06-19 16:55:58
【问题描述】:
我有两张桌子:
1)其中之一是发票,有成千上万的数据。在我的 INVOICES 表中,有客户的发票及其价格。
2) 另一个是债务。在我的 DEBTS 表中,有每个客户的发票总债务。
我的目标是找到最接近的金额和债务发票。例如,我有表格:
DEBTS 表:
CUSTOMER_ID TOTAL_DEBTS
3326660 444$
2789514 165$
4931541 121$
INVOICES 表:
CUSTOMER_ID INVOICE_ID AMOUNT_OF_INVOICE
3326660 1a 157$
3326660 1b 112$
3326660 1c 10$
3326660 1d 94$
3326660 1e 47$
3326660 1f 35$
3326660 1g 14$
3326660 1h 132$
3326660 1i 8$
3326660 1j 60$
3326660 1k 42$
2789514 2a 86$
2789514 2b 81$
2789514 2c 99$
2789514 2d 61$
2789514 2e 16$
2789514 2f 83$
4931541 3a 11$
4931541 3b 14$
4931541 3c 17$
4931541 3d 121$
4931541 3e 35$
4931541 3f 29$
我的目标表是:
CUSTOMER_ID TOTAL_DEBTS CALCULATED_AMOUNT INVOICES_ID
3326660 444$ 444$ 1a,1b,1f,1h,1i
2789514 165$ 164$ 2b,2f
4931541 121$ 121$ 3d
因为我的表中有成千上万的数据,所以性能对我来说非常重要。我从stackoverflow中找到代码: closest subset sum
但是,性能很低。当我在 calculeted_amount 和 total_debts 之间找到相同的值时,我必须停止加法循环。
感谢您的帮助。
【问题讨论】:
-
这不是一个适合 SQL 的问题。您需要概括所有可能的组合并查看哪个最接近。
-
同意@GordonLinoff,阅读这篇文章,它可以帮助你理解你对wiki的问题是什么