SQL 计算账户余额
有一张简单的账户表 t_account,它记录了每次支出(或收入)的金额,只是缺了余额字段,我们需要在每笔账单后面计算出当时的账户余额。t_account 的部分数据:
id op amount
------ ------ --------1 in 10002 exp 1243 exp 684 exp 2565 in 886 in 2007 exp 118 exp 404
其中,id 越大表示这条记录产生的时间越近,op 字段是操作类型,‘in’ 表示收入,‘exp’ 表示支出,amount 是每次操作的金额。
具体来说,当 id = 1 时,账户上增加了 1000,此时余额是 1000;
当 id = 2 时,账户减去了 124,此时余额是 1000 - 124 = 876;
当 id = 3 时,账户又减去了 68,此时余额是 1000 - 124 - 68 = 808;
直到 id = 5,账户上才又有了一笔收入,此时余额是 1000 - 124 - 68 - 256 + 88 = 640 。
最终算到 id = 8 时,账户的余额是 425 。
实际上,当 id = x 时,它余额就是将 id 小于等于 x 的所有记录的 amount 累加,如果遇到 op 的类型是 ‘exp’ 的记录,则相应的加法操作变成减法。
话不多说,直接上 SQL 。
SELECT *,(SELECT SUM(IF(op = 'exp', - 1 * amount, amount)) FROMt_account b WHERE b.id <= a.id) AS balance
FROMt_account a
结果呈现 >>>
id op amount balance
------ ------ ------ ---------1 in 1000 1000 2 exp 124 876 3 exp 68 808 4 exp 256 552 5 in 88 640 6 in 200 840 7 exp 11 829 8 exp 404 425
如果用窗口函数,那累加的写法会更简单些。
SELECT *,SUM(IF(op = 'exp', - 1 * amount, amount)) OVER (ORDER BY id) AS balance
FROMt_account a
SQL 计算账户余额相关推荐
- sql计算留存_SQL无所不能:DBA宝妈宝爸系列分享
原文链接:https://www.modb.pro/db/22315 目前程序从功能上其实已经完全满足客户(当然我这里的客户都是指媳妇儿)需求,具体可参考: 使用SQL计算宝宝每次吃奶的时间间隔 - ...
- SQL计算宝宝吃奶的时间间隔(二)
导读:之前,在"数据和云"公众号发表过一篇文章<如何使用SQL计算宝宝每次吃奶的时间间隔(分析函数的使用)>,本文为续篇,如何提升程序的易用性. 因为我工作繁忙,时常不 ...
- 如何使用SQL计算宝宝每次吃奶的时间间隔(文末含PPT)
编者的话:搞好SQL可以做很多事情,比如说可以解决海盗分金的问题,可以用SQL把大象装进冰箱,还可以用SQL解决环环相扣的刑侦推理问题,近期,有位读者朋友投稿了"使用SQL计算宝宝每次吃奶的 ...
- oracle 求一年多少天,SQL 计算一年有多少天
SQL 计算一年有多少天,计算当前年份有多少天. SQL 计算一年有多少天 问题描述 计算当前年份有多少天. SQL 计算一年有多少天 解决方案 计算当前年份有多少天,等同于计算下一年的第一天和当前年 ...
- 编写python程序、计算账户余额_《易学Python》——第1章 为何学习Python 1.1 学习编程...
本节书摘来自异步社区<易学Python>一书中的第1章,第1.1节,作者[澳]Anthony Briggs,王威,袁国忠 译,更多章节内容可以访问云栖社区"异步社区"公 ...
- 在DB2中,使用sql 计算昨天、最后一天等日期
在DB2中,使用sql 计算想要的日期值,比如昨天,上月的最后一天,下个月的最后一天等. /* 作者:宾晓辰 微信:BD_BXC MAIL:646501050@QQ.COM PHONE:1802626 ...
- 2021_lg_03.SQL实战:如何用sql计算用户留存问题
如何用sql计算用户留存问题 一.留存 1 .留存的含义: 留存:指基准日到APP的用户在之后的n日当天返回APP的人数: 留存率 = 基准日之后的n天当日返回的用户数 / 基准日的用户数 * 100 ...
- PL/SQL计算质数
PL/SQL计算质数 2008-01-08 10:48:31| 分类: 默认分类 | 标签: |举报 |字号大中小 订阅 看到别人写的一片计算质数文章, 感觉不错:转过来学习一下. 目标很简 ...
- 使用SQL 计算一组数据的峰度、偏度 公式依据excel的KURT函数和SKEW函数 Oracle 数据库
使用SQL 计算一组数据的峰度.偏度 公式依据excel的KURT函数和SKEW函数 因为工作原因,要把excel的KURT和SKEW函数在Oracle实现出来并统计,在网上找了半天没有答案..只能自 ...
最新文章
- Cisco asa 5510升级IOS和ASDM
- 高并发系列:存储优化之也许可能是史上最详尽的分库分表文章之一
- 逻辑模型设计步骤-关系模式定义
- 【Linux】9_存储管理交换分区管理Swap
- Java I/O体系原理
- 征稿 | JIST 2019 Regular Technical Papers
- batchplot3.5.9如何使用_VirtualBox中安装的Windows XP如何使用USB3.0
- CF 71C. Round Table Knights
- 全网最全-Java简历优化-专业技能
- python概率分析_请问如何通过Python做R*C列表的Fisher确切概率分析?
- 模块化存储区域网络(SAN)解决方案的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- java毕业设计学生学习评价系统Mybatis+系统+数据库+调试部署
- 小程序轮播图swiper实现
- 【故障分析】基于主成分分析实现三容水箱故障诊断附matlab代码
- LeetCode452用最少的箭射爆气球
- CentOS6安装rpm时报错“Cannot find a valid baseurl for repo: centos-sclo-rh“的解决办法
- 十年匠心,让国漫精致到羽翼丰满!《老鹰抓小鸡》幕后制作分享
- 求解单位冲激响应的笔记
- 你不得不了解的人工智能基础知识
- seo推广,seo推广是什么意思呢