当前位置: 首页 > news >正文

【数据库】【sql】如何用SQL实现跨行计算

【背景】

这里的跨行计算不是指整体聚合类的函数比如SUM等的功能,而是指递归算法。
比如我接到有需求,有一个结果字段需要是目前所有行该字段的和,这是属于递归类的算法,SQL中如何实现呢?

【方法】

可以使用窗口函数,比如:

SELECTsales_date,sales_amount,LAG(sales_amount) OVER (ORDER BY sales_date) AS prev_sales_amount
FROMsales_data;

这里面的LAG代表前一行的值,顺序由Order By指定。这里是直接获得了上一行的值,如果再和本行进行计算,就可以实现各类递归算法。
除了LAG,通用SQL中还有LEAD,用法差不多,只不过代表下一行的值。

【注意】

不同的数据库,关键词和语法会有所变化,但是大差不差,心法是差不多的。
比如PostgreSQL还有FIRST_VALUE函数等。

http://www.lryc.cn/news/227325.html

相关文章:

  • Oracle(概念含安装)
  • P6入门:项目初始化4-项目详情之预算日志及汇总Budget
  • CSS 中BFC是什么?
  • uniapp的几种跳转方式
  • 【MySQL】初识数据库
  • 计算机网络(一)
  • 英语经典名句,柯桥成人英语培训
  • @JSONField或@JsonProperty注解使用
  • 高效简洁的文档翻译网站
  • SpringBoot自动装配定义先后顺序失效原因极其解析
  • API 集成测试工具Hitchhiker 0.1.1 正式发布
  • idea无法下载源码-Cannot download sources
  • docker搭建mysql主从复制
  • 在MacBook上实现免费的PDF文件编辑
  • QT第2课-GUI程序实例分析
  • Android修行手册 - POI操作Excel常用样式(字体,背景,颜色,Style)
  • Sprint Boot 学习路线 5
  • git02->gui图形化界面使用,ssh协议,idea集成GIT
  • 面向对象 元类 gil log 协程 垃圾回收 描述符 property
  • bibitem格式 添加参考文献
  • Leetcode 2934. Minimum Operations to Maximize Last Elements in Arrays
  • 02:2440---时钟体系
  • SOEM源码解析——ecx_siiSM(读取SII的SM信息)
  • 【见缝插针】射击类游戏-微信小程序项目开发流程详解
  • flutter开发实战-TweenSequence实现动画序列
  • Flowable 外部表单
  • [mysql]索引优化-2
  • 数据分析实战 | 泊松回归——航班数据分析
  • Fliki AI:让视频创作更简单、更高效
  • webGL编程指南 第五章 MultiTexture.html