You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按contract_status统计各类合同的总WAIVED金额?

问题描述

我有两张数据表:

表1:contract(示例)

contract_idcontract_status
111Active
122Active
133Finished
144Active
155Finished

contract_status的取值为:Active 和 Finished

表2:ledger(示例)

ledger_idcontract_idledger_statusamount
1gh111WAIVED450
2uk111PAID0
2jz111WAIVED200
4bc122PAID0
5jw122UNPAID150
3xs133PAID0
9kd133WAIVED250
7bf144WAIVED100
8aq155UNPAID700

单个contract可对应多个ledger_id

需求

如何计算每种contract_status(Active和Finished)下的总WAIVED金额?

预期输出

contract_statustotal_amount_waived
Active750
Finished250

解决方案

可以通过关联两张表,筛选出ledger_status为WAIVED的记录,再按contract_status分组求和,SQL语句如下:

SELECT 
    c.contract_status,
    SUM(l.amount) AS total_amount_waived
FROM 
    contract c
JOIN 
    ledger l ON c.contract_id = l.contract_id
WHERE 
    l.ledger_status = 'WAIVED'
GROUP BY 
    c.contract_status;

逻辑说明

  1. 使用JOIN关联contract和ledger表,关联条件为两张表的contract_id一致;
  2. 通过WHERE子句筛选出ledger表中状态为WAIVED的记录;
  3. 按contract_status分组,用SUM()函数计算每组的总金额;
  4. 最终得到每种合同状态对应的豁免金额总和。

内容的提问来源于stack exchange,提问作者Enzo Austin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:40:29