微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何按总和小于 x 的数量对数据进行分组

如何解决如何按总和小于 x 的数量对数据进行分组

sql 中处理此问题时遇到问题。有一张与客户相关的支票金额表。如果我想给他们每个要支付的唯一数字,我无法弄清楚如何仅通过更新语句而不是逐行进行(有大量数据)

我必须按一定的标准分组,然后付款,但不能超过 10000 美元。

表格

customer CheckAmount
a   4000
a 5000
a 2001
b 3333
c 8000
d 11000

在我更新之后它应该是这样的:

customer checkamount paymentnumber
a 4000 1
a 5000 1
a 2001 2
b 3333 3
c 8000 4
d 11000 5

这是否可以仅在更新语句中实现?

解决方法

如果有另外一列按时间标识交易,这个问题就可以解决,像这样:

{
    "StartAt": "ValidateWorkcellConfigTask","States": {
    "ValidateWorkcellConfigTask": {
        "Next": "ConfigValidationTypeChoiceState","Parameters": {
        "FunctionName": "ValidateWorkcellConfig","Payload.$": "$"
        },"OutputPath": "$","Type": "Task","Resource": "arn:aws:states:::lambda:invoke","TimeoutSeconds": 15
    },"ConfigValidationTypeChoiceState": {
        "Type": "Choice","Comment": "Forwards a VALID workflow config to the Provisioning Workflow or Relays the INVALID workflow config for logging","Choices": [
        {
            "Variable": "$.uuid","StringEquals": "SEA90-1","Next": "endState"
        },{
            "Variable": "$.validConfig","Next": "SuccessRelayTask"
        }
        ]
    },"endState": {
        "Type": "Pass","End": true
    },"SuccessRelayTask": {
        "End": true,"Parameters": {
        "FunctionName": "StatusRelayHandler","ResultPath": "$","TimeoutSeconds": 15
    }
    }
}

那么更新语句可能是这样的:

transaction_num     customer    checkamount
1                   a           4000    
2                   a           5000    
3                   a           2001    
4                   b           3333    
5                   c           8000    
6                   d           11000

fiddle

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。