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

Oracle SELECT语句求助:计算用户剩余可用天数

解决Oracle计算用户剩余可用天数的问题

嘿,这个需求很明确,就是要给每一行记录计算到当前为止的剩余可用天数对吧?咱们可以用Oracle的窗口函数轻松实现,不用写复杂的子查询。

需求回顾

现有表记录用户每日使用天数,总可用额度是11天,需要输出每一行的总额度、当日使用天数,以及累计使用后的剩余天数。

实现SQL语句

SELECT 
    ID,
    NAME,
    11 AS DAYS,
    USED,
    11 - SUM(USED) OVER (PARTITION BY NAME ORDER BY DATE) AS LEFT
FROM 
    your_table_name; -- 记得替换成你的实际表名

关键逻辑解释

  • 11 AS DAYS:直接固定输出总可用天数,因为所有用户的额度都是11天。
  • SUM(USED) OVER (PARTITION BY NAME ORDER BY DATE):这是窗口函数的核心:
    • PARTITION BY NAME:按用户分组计算,确保每个用户的累计天数独立计算(如果有多个用户的话也能正确处理)。
    • ORDER BY DATE:按照记录的日期顺序累加使用天数,保证剩余天数是按时间先后逐步递减的。
  • 11 - 累计USED:用总额度减去到当前行的累计使用天数,就是剩余可用天数。

验证结果

执行上面的SQL后,得到的结果正好符合你的预期:

IDNAMEDAYSUSEDLEFT
1John11110
2John1128
3John1126

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:22:44