首页 > 数据库 >oracle逐行处理函数LAG

oracle逐行处理函数LAG

时间:2024-03-28 10:59:26浏览次数:23  
标签:column LAG sales value item oracle 处理函数 逐行 quantity

在Oracle中,要计算一个列除以上一行的同一列值,可以使用LAG函数来获取上一行的值。以下是一个示例SQL查询,它使用LAG来计算当前行除以上一行的同一列值:   SELECT column_value, column_value / LAG(column_value) OVER (ORDER BY some_order_column) AS division_result FROM your_table;  

在这个查询中,column_value是你想要进行除法操作的列名,some_order_column是用来排序的列名,your_table是你的表名。LAG函数会在当前行的前一行获取column_value的值,然后用当前行的值除以这个LAG出来的值。

注意,第一行的LAG值将会是NULL,因为没有上一行。如果你想为第一行指定一个特定的值,可以使用LAG的第二个参数来设置默认值

 

或者这样,但是明显没有上一个好。

 

SELECT
item_id,
sales_quantity,
100 * (SUM(sales_quantity) OVER (ORDER BY item_id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - sales_quantity) /
SUM(sales_quantity) OVER (ORDER BY item_id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS percentage_change
FROM
sales;

 

标签:column,LAG,sales,value,item,oracle,处理函数,逐行,quantity
From: https://www.cnblogs.com/cinemaparadiso/p/18101036

相关文章

  • oracle中的分割函数(split效果)
     CREATEORREPLACEFUNCTIONfn_split(p_strINVARCHAR2,p_delimiterINVARCHAR2)RETURNty_str_split--分割函数--新建前要先建立ty_str_split执行语句为:CREATEORREPLACETYPEty_str_splitISTABLEOFVARCHAR2(4000);ISjINT:=0;iINT:=1;le......
  • Oracle中的for update 和 for update nowait
    在Oracle数据库中,FORUPDATE和FORUPDATENOWAIT是两种用于行级锁定的SQL子句,它们通常用在SELECT语句中以确保数据的一致性和隔离性。这里是它们的基本区别和用法:FORUPDATEFORUPDATE子句用于锁定SELECT语句检索到的行,以便于进行更新操作。当使用FORUPDATE时,如果所选行已经......
  • 【Oracle】获取指定用户的所有表的行数(实时的)
    #!/bin/bash#ORACLE_USER="username"ORACLE_PASSWORD="password"ORACLE_HOST="hostname"ORACLE_PORT="port"ORACLE_SID="SID"#rowcountfunctionget_table_row_count(){localtable_name=$1sqlplu......
  • oracle 11G 数据库归档日志清理流程。
    oracle11G数据库归档日志清理流程。链接:ORACLE11g数据库归档日志清理规程-百度文库(baidu.com)......
  • Oracle 分页查询,排序分页
    效率最高内查询小于等于外查询大于select*from(selectt.*,rownumasnfromSTUDENTtwhererownum<=4)twheret.n>2orderbyt.iddesc;查看执行计划explainplanforselect*from(selectrownumasn,d.*fromdeptdwhererownum<=4)twheret.n>......
  • Oracle 小知识
    --会乱码SELECTsys_guid()fromdual;--大写uuidSELECTRAWTOHEX(SYS_GUID())FROMdual;--小写SELECTlower(sys_guid())fromdual;--列拼接SELECTname||create_time||idaFROMSTUDENTs;--字符串拼接SELECT'张三'||'李四'||'王五'nameFROM......
  • Oracle数据库入门第三课(函数)
    前面二白讲了一些简单的查询语句,仅仅知道查询语句的语法是不够的,要想实现更多的需求,更重要的是函数的使用,这节课我们简单说一下一些函数的使用。一、函数的分类什么叫做函数?函数就是用来实现某种功能的,提前声明好的代码块分类:•系统函数         ‣单行函数......
  • Oracle导出数据库与还原
    导出部分1.获取到Oracledirectory目录与实际电脑目录的映射2.CMD导出Oracle数据库DMP文件//expdp用户/密码@数据库监听地址schemas=表空间名称dumpfile=自定义名称.dmpdirectory=DATA_DIR(上面SQL中DIRECTORY_NAME选择一个导出的文件就会在对应的DIRECTORY_PATH......
  • Oracle备份的几种方式
    原文出处:https://www.cnblogs.com/lcword/p/11775657.html 从物理与逻辑的角度来分类:从物理与逻辑的,备份可以分为物理备份和逻辑备份。物理备份:对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份。物理备份又可以分为脱机备份(冷备份)和联机备份(热备份),前者是在关闭数......
  • [Oracle]细节与使用经验
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18032041出自【进步*于辰的博客】纯文字阐述,内容比较干。并且,由于考虑到时间长了恐有所遗漏,便即兴记录,并没有对内容进行筛选、排序。因此,大家在阅读时可以直接Ctrl+F进行......