gpt4 book ai didi

mysql - SELECT SomeColumn where SUM(SomeOtherColumn) of any N rows or nless is a certain value

转载 作者:可可西里 更新时间:2023-11-01 08:04:17 27 4
gpt4 key购买 nike

我完全被这个技能评估问题难住了。技能评估完成。我太老了,不能用 SO 来欺骗我……只是好奇如何解决这个问题。

您有一个包含以下列的表格:

Sender | Recipient | Date | Amount

如果所有收件人的金额之和不超过任意 3 个且大于或等于 X,您将如何选择?

例如:

Sender  | Recipient |    Date    | Amount
--------+-----------+------------+-------
William | Jane | 2016-05-27 | $1243
Sarah | Josh | 2016-05-12 | $500
Rohit | Tammy | 2016-05-24 | $200
Jacob | Josh | 2016-05-17 | $500
Abraham | Josh | 2016-05-15 | $10
Marie | Vivian | 2016-05-16 | $1243
Alex | Josh | 2016-05-07 | $150

如果 X = 1024 美元,您应该得到 Jane、Vivian 和 Josh。乔希,因为 500 美元 + 500 美元 + 150 美元 > 1024 美元。

解决方案所有三种解决方案都有效。非常感谢你们。真的很感激。

为简单因素选择@Tim Biegeleisen 的答案。

最佳答案

一个可行的技巧是为每个 Amount、每个 recipient 生成一个行号。然后我们可以使用简单的 WHERE 条件简单地限制每个组的最大三个金额。

SELECT Recipient, SUM(Amount)
FROM test t
WHERE (SELECT 1 + COUNT(*)
FROM test
WHERE Amount >= t.Amount AND Recipient = t.Recipient AND
date < t.date) <= 3
GROUP BY Recipient
HAVING SUM(Amount) >= 1024

此解决方案使用交易日期来打破平局(例如,在 Josh 在两个不同记录中收到 500 美元的情况下)。该解决方案对于收件人在同一天有两笔相同金额的交易的用例不稳健。这个解决方案的一个好处是它不需要使用任何用户定义的变量。

SQLFiddle

关于mysql - SELECT SomeColumn where SUM(SomeOtherColumn) of any N rows or nless is a certain value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37506663/

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