Oracle多行函数和分析函数
Oracle数据库字段数据拆分成多行(REGEXP_SUBSTR函数)
Oracle数据库字段数据拆分成多⾏(REGEXP_SUBSTR函数)做多选功能时为了简便,会在某个字段中存储多个值,保存时虽然省事,但后续的查询统计时还需要拆分数据才⾏,因此这时需要将字段内的值分成多⾏以便后续使⽤。
下⾯这个例⼦实现了字段内数据的拆分:--创建测试表create table t_test(t_type_id varchar2(10) primary key,--主键t_type_name varchar2(20),--类型名称t_text varchar2(200)--类型内容);--写⼊数据insert allinto t_test values('001','家具','桌⼦,椅⼦,沙发,柜⼦,床')into t_test values('002','设备','显⽰器,电脑,⿏标,键盘,投影仪')into t_test values('003','办公⽤品','笔记本,签字笔,⽂件夹')select1from dual;--查看表数据select*from t_test;--类型内容字段拆分成多⾏SELECT distinct t.t_type_id,t.t_type_name,REGEXP_SUBSTR(t.t_text, '[^,]+', 1, level) t_textfrom t_test tconnect by level<=LENGTH(t.t_text) - LENGTH(regexp_replace(t.t_text, ',', '')) +1order by t.t_type_id, t.t_type_name;--删除测试表drop table t_test;效果对⽐:拆分前的原始数据:拆分后的数据:项⽬中⽤到,记录分享。
oracle函数
SQL> SELECT empno, ename, deptno
2 FROM
emp
3 WHERE ename = 'blake';
no rows selected
SQL> SELECT 2 FROM 3 WHERE
empno, ename, deptno emp ename = UPPER('blake');
学习改变命运,知 识创造未来
oracle函数
数值型函数
使用ceil函数: SELECT ceil(2.35) FROM dual; 执行结果: CEIL(2.35) ------------3 说明:该函数求得大于等于2.35的最小整数,结果
为3。
学习改变命运,知 识创造未来
oracle函数
数值型函数
--------------- -------------- -----------------
45.92
46
50
学习改变命运,知 识创造未来
oracle函数
使用 TRUNC函数
SQL> SELECT TRUNC(45.923,2), TRUNC(45.923),
2
TRUNC(45.923,-1)
45.92
ØMOD: 取余数 MOD(1600, 300) 100
学习改变命运,知 识创造未来
oracle函数
使用 ROUND 函数
SQL> SELECT ROUND(45.923,2), ROUND(45.923,0),
2
ROUND(45.923,-1)
3 FROM DUAL;
oralce函数
oralce函数Oracle是一种关系数据库管理系统,它使用了一种名为Oracle数据库的数据库管理系统。
Oracle是一种强大的工具,提供了许多内置函数,可以用于在数据库中进行各种操作。
以下是一些常用的Oracle函数。
1.聚合函数-AVG:计算指定列的平均值。
-COUNT:计算指定列中非空数据的数量。
-SUM:计算指定列的总和。
-MAX:找到指定列的最大值。
-MIN:找到指定列的最小值。
2.字符串函数-CONCAT:将两个字符串连接成一个字符串。
-LOWER:将字符串转换为小写。
-UPPER:将字符串转换为大写。
-LENGTH:计算字符串的长度。
-SUBSTR:返回一个字符串的子字符串。
3.数值函数-ROUND:将一个数值四舍五入到指定的小数位数。
-CEIL:向上取整,返回不小于指定数值的最小整数。
-FLOOR:向下取整,返回不大于指定数值的最大整数。
-ABS:返回指定数值的绝对值。
-MOD:返回两个数值的余数。
4.日期和时间函数-SYSDATE:返回当前日期和时间。
-ADD_MONTHS:在指定日期上增加指定的月份。
-TRUNC:截断日期或时间到指定的精度。
-MONTHS_BETWEEN:计算两个日期之间的月数差。
-TO_CHAR:将日期转换为指定格式的字符串。
5.条件函数-DECODE:根据条件返回不同的值。
-CASE:根据条件执行不同的操作。
-NVL:如果给定的表达式为NULL,则将其替换为指定的值。
-NULLIF:如果两个表达式的值相等,则返回NULL。
6.分析函数-ROW_NUMBER:为每一行分配一个唯一的数字。
-RANK:为每一行分配一个排名,如果有并列的值,则排名相同。
-DENSE_RANK:为每一行分配一个排名,如果有并列的值,则排名可以重复。
-LEAD:返回指定行后的值。
-LAG:返回指定行前的值。
上述函数只是Oracle提供的一小部分功能,Oracle还提供了许多其他有用的函数。
oracle常用的分析函数
oracle常⽤的分析函数常⽤的分析函数如下所列:row_number() over(partition by ... order by ...)rank() over(partition by ... order by ...)dense_rank() over(partition by ... order by ...)count() over(partition by ... order by ...)max() over(partition by ... order by ...)min() over(partition by ... order by ...)sum() over(partition by ... order by ...)avg() over(partition by ... order by ...)first_value() over(partition by ... order by ...)last_value() over(partition by ... order by ...)lag() over(partition by ... order by ...)lead() over(partition by ... order by ...)⼀、Oracle分析函数简介:在⽇常的⽣产环境中,我们接触得⽐较多的是OLTP系统(即Online Transaction Process),这些系统的特点是具备实时要求,或者⾄少说对响应的时间多长有⼀定的要求;其次这些系统的业务逻辑⼀般⽐较复杂,可能需要经过多次的运算。
⽐如我们经常接触到的电⼦商城。
在这些系统之外,还有⼀种称之为OLAP的系统(即Online Aanalyse Process),这些系统⼀般⽤于系统决策使⽤。
通常和数据仓库、数据分析、数据挖掘等概念联系在⼀起。
这些系统的特点是数据量⼤,对实时响应的要求不⾼或者根本不关注这⽅⾯的要求,以查询、统计操作为主。
OracleFormBuilder各种函数精讲解析
OracleFormBuilder各种函数精讲解析Form属性、内置子程序、触发器、系统变量一、属性1.1 通用属性名称(Name)子类信息(Subclass Information)备注(Comments)标题(Title)方向(Direction)字体名称(Font Name)字体大小(Font Size)字体粗细(Font Weight)字体风格(Font Style)字体间距(Font Spacing)前景色(Foreground)背景色(Background)填充图案(Fill Pattern)字符模式逻辑属性(Character Mode Logical Attribute)黑底白字(White on Black)视觉属性组(Visual Attribute Group)当前记录视觉属性组(Current Record Visual Attribute Group?/div> 宽度(Width)高度(Height)立体(Bevel)显示水平滚动条(Show Horizontal Scroll Bar)显示垂直滚动条(Show Vertical Scroll Bar)可见(Visible)X轴坐标(X Position)Y轴坐标(Y Position)启用(Enabled)标签文本(Label)允许查询(Query Allowed)允许插入(Insert Allowed)允许更新(Update Allowed)显示滚动条(Show Scroll Bar)带滚动条画布(Scroll Bar Canvas)滚动条标签页(Scroll Bar Tab Page)滚动条方向(Scroll Bar Orientation)滚动条的X轴坐标(Scroll Bar X Position)滚动条的Y轴坐标(Scroll Bar Y Position)滚动条的宽度(Scroll Bar Width)滚动条的高度(Scroll Bar Height)反转方向(Reverse Direction)显示的记录数(Number of Records Displayed)提取的最大记录数(Maximum Records Fetched)最大查询时间(Maximum Query Time)最大长度(Maximum Length)固定长度(Fixed Length)大小写限制(Case Restriction)列名(Column Name)自动跳离(Automatic Skip)折行风格(Wrap Style)数据类型(Data Type)记录间的距离(Distance Between Records)图标文件名(Icon Filename)需要(Required)帮助提示(Hint)1.2 表格模块对象属性控制台窗口(Console Window)菜单源(Menu Source)菜单模块(Menu Module)初始菜单(Initial Menu)菜单风格(Menu Style)推迟实行“需要”属性(Defer Required Enforcement)菜单角色(Menu Role)鼠标导航限制(Mouse Navigation Limit)第一导航数据块(First Navigation Data Block)验证单元(Validation Unit)交互模式(Interaction Mode)孤立模式(Isolation Mode)坐标系统(Coordinate System)字符单元宽度(Character Cell Width)字符单元高度(Character Cell Height)实体单位(Real Unit)使用3D控件(Use 3D Controls)表格水平工具条画布(Form Horizontal Toolbar Canvas)表格垂直工具条画布(Form Vertical T oolbar Canvas)保存点模式(Savepoint Mode)1.3 触发器对象属性触发器风格(Trigger Style)触发器文本(Trigger Text)在输入-查询模式中触发(Fire in Enter-Query Mode)执行层次(Execution Hierarchy)在“键盘帮助”中显示(Display in ‘Keyboard Help’)“键盘帮助”文本(‘Keyboard Help’Text)触发器类型(Trigger Type)1.4 警告对象属性信息(Message)警告风格(Alert Style)按钮1标签(Button1 Label)按钮2标签(Button2 Label)按钮3标签(Button3 Label)缺省警告按钮(Default Alert Button)1.5 数据块对象属性导航器风格(Navigation Style)前一个导航数据块(Previous Navigation Data Block)下一个导航数据块(Next Navigation Data Block)查询数组大小(Query Array Size)缓冲的记录数(Number of Records Buffered)查询所有记录(Query All Records)记录方向(Record Orientation)单记录(Single Record)数据库数据块(Database Block)使用主键(Enforce Primary Key)查询数据源类型(Query Data Source Type)查询数据源名称(Query Data Source Name)查询数据源列(Query Data Source Columns)查询数据源参数(Query Data Source Arguments)WHERE子句(WHERE Clause)ORDER BY子句(ORDER BY Clause)优化提示(Optimizer Hint)锁定模式(Locking Mode)允许删除(Delete Allowed)键模式(Key Mode)仅更新修改的列(Update Changed Columns Only)实行列安全控制(Enforce Column Security)DML数据目标类型(DML Data Target Type)DML数据目标名称(DML Data Target Name)插入过程名称(Insert Procedure Name)插入过程结果集列(Insert Procedure Result Set Columns)插入过程参数(Insert Procedure Arguments)更新过程名(Update Procedure Name)更新过程结果集列(Update Procedure Result Set Columns)更新过程参数(Update Procedure Arguments)删除过程名(Delete Procedure Name)删除过程结果集列(Delete Procedure Result Set Columns)删除过程参数(Delete Procedure Arguments)锁定过程名(Lock Procedure Name)锁定过程结果集列(Lock Procedure Result Set Columns)锁定过程参数(Lock Procedure Arguments)DML数组大小(DML Array Size)预计算汇总(Precompute Summaries)在数据块菜单中列出(Listed In Block Atribute)数据块描述(Data Block Description)1.6 项对象属性项类型(Item Type)对齐(Justification)多行(Multi-Line)隐藏数据(Conceal Data)保持光标位置(Keep Cursor Position)弹出式菜单(Popup Menu)文件名(Filename)执行模式(Execution Mode)通讯模式(Communication Mode)数据源数据块(Data Source Data Block)数据源X轴(Data Source X Axis)数据源Y轴(Data Source Y Axis)提交时更新(Update on Commit)复选时的值(Value when Checked)未复选时的值(Value when Unchecked)其它值的复选框映射(Check Box Mapping of Other Values)图象格式(Image Format)图象深度(Image Depth)压缩质量(Compression Quality)显示质量(Display Quality)显示面板(Show Palette)大小风格(Sizing Style)列表中的元素(Elements in List)列表风格(List Style)访问键(Access Key)图标化(Iconic)缺省按钮(Default Button)声音格式(Sound Format)音频通道(Audio Channels)压缩(Compress)声音质量(Sound Quality)可用键盘导航(Keyboard Navigable)前一个导航项(Previous Navigation Item)下一个导航项(Next Navigation Item)鼠标导航(Mouse Navigate)初始值(Initial Value)格式掩码(Format Mask)最高允许值(Highest Allowed Value)最低允许值(Lowest Allowed Value)从项中复制值(Copy Value from Item)用项同步化(Synchronize with item)计算模式(Calculation Mode)公式(Formula)汇总函数(Summary Function)汇总块(Summarized Block)汇总项(Summarized Item)显示的项数(Number of Item Displayed)主键(Primary Key)仅查询(Query Only)查询长度(Query Length)不区分大小写的查询(Case Insensitive Query)仅为NULL则更新(Update Only if NULL)锁定记录(Lock Record)值列表(List of Values)列表X轴位置(List X Position)列表Y轴位置(List Y Position)编辑器(Editor)编辑器的X轴位置(Editor X Position)编辑器的Y轴位置(Editor Y Position)画布(Canvas)标签页(Tab Page)释放(Rendered)显示播放按钮(Show Play Button)显示录制按钮(Show Record Button)显示倒回按钮(Show Rewind Button)显示快进按钮(Show Fast Forward Button)显示音量控制(Show Volume Control)显示时间显示器(Show Time Indicator)显示滑杆(Show Slider)提示(Prompt)提示显示风格(Prompt Display Style)提示文本对齐(Prompt Justification)提示附件边缘(Prompt Attachment Edge)提示对象对齐(Prompt Alignment)提示附件偏移(Prompt Attachment Offset)提示对象对齐偏移(Prompt Alignment Offset)提示阅读顺序(Prompt Reading Order)提示视觉属性组(Prompt Visual Attribute Group)提示字体名(Prompt Font Name)提示字体大小(Prompt Font Size)提示字体粗细(Prompt Font Weight)提示字体风格(Prompt Font Style)提示字体间距(Prompt Font Spacing)提示前景色(Prompt Foreground Color)提示背景色(Prompt Background Color)提示填充图案(Prompt Fill Pattern)提示(Hint)自动显示提示(Display Hint Automatically)工具提示(T ooltip)工具提示视觉属性组(Tooltip Visual Attribute Group)初始键盘状态(Initial Keyboard State)读取顺序(Reading Order)键盘状态(Keyboard State)1.7 关系对象属性从数据块(Detail Data Block)关联条件(Join Condition)删除记录行为(Delete Record Behavior)防止无主记录操作(Prevent Masterless Operations)协调(Coordination)协调状态(Coordination States)1.8 画布对象属性画布类型(Canvas Type)输入时置前(Raise On Entry)弹出式菜单(Popup Menu)窗口(Window)画布上的视图端口X轴位置(Viewport X Position Canvas)画布上的视图端口Y轴位置(Viewport Y Position Canvas)视图端口的X轴位置(Viewport X Position)视图端口的Y轴位置(Viewport Y Position)视图端口高度(Viewport Height)视图端口宽度(Viewport Width)标签风格(Tab Style)标签附件边缘(Tab Attachment Edge)1.9 框架对象属性布局数据块(Layout Data Block)更新布局(Update Layout)布局风格(Layout Style)框架对齐(Frame Alignment)单对象对齐(Single Object Alignment)水平边距(Horizontal Margin)垂直边距(Vertical Margin)水平对象偏移(Horizontal Object Offset)垂直对象偏移(Vertical Object Offset)允许扩展(Allow Expansion)收缩包容(Shrink wrap)垂直填充(Vertical Fill)每行最多对象数(Maximum Objects Per Line)起始提示对齐(Start Prompt Alignment)起始提示偏移(Start Prompt Offset)顶部提示对齐(T op Prompt Alignment)顶部提示偏移(T op Prompt Offset)允许多行提示(Allow Multi-Line)允许顶部-附加提示(Allow Top-Attached)允许起始-附加提示(Allow Start-Attached)框架标题(Frame Title)框架标题对齐(Frame Title Alignment)框架标题偏移(Frame Title Offset)框架标题间隔(Frame Title Spacing)框架标题阅读顺序(Frame Title Reading Order)滚动条对齐(Scroll Bar Alignment)框架标题视觉属性组(Frame Title Visual Attribute Group)1.10 标签页对象属性1.11 编辑器对象属性底部标题(Bottom Title)1.12 值表(Lovs)对象属性列表类型(List Type)记录组(Record Group)列映射属性(Column Mapping Properties)显示之前过滤(Filter Before Display)自动显示(Automatic Display)自动刷新(Automatic Refresh)。
Oracle之分析函数
Oracle之分析函数⼀、分析函数 1、分析函数 分析函数是Oracle专门⽤于解决复杂报表统计需求的功能强⼤的函数,它可以在数据中进⾏分组然后计算基于组的某种统计值,并且每⼀组的每⼀⾏都可以返回⼀个统计值。
2、分析函数和聚合函数的区别 普通的聚合函数⽤group by分组,每个分组返回⼀个统计值,⽽分析函数采⽤partition by分组,并且每组每⾏都可以返回⼀个统计值。
3、分析函数的形式 分析函数带有⼀个开窗函数over(),包含分析⼦句。
分析⼦句⼜由下⾯三部分组成: partition by :分组⼦句,表⽰分析函数的计算范围,不同的组互不相⼲; ORDER BY:排序⼦句,表⽰分组后,组内的排序⽅式; ROWS/RANGE:窗⼝⼦句,是在分组(PARTITION BY)后,组内的⼦分组(也称窗⼝),此时分析函数的计算范围窗⼝,⽽不是PARTITON。
窗⼝有两种,ROWS和RANGE; 使⽤形式如下:OVER(PARTITION BY xxx PORDER BY yyy ROWS BETWEEN rowStart AND rowEnd) 注:窗⼝⼦句在这⾥我只说rows⽅式的窗⼝,range⽅式和滑动窗⼝也不提。
⼆、OVER() 函数 1、sql 查询语句的 order by 和 OVER() 函数中的 ORDER BY 的执⾏顺序 分析函数是在整个sql查询结束后(sql语句中的order by的执⾏⽐较特殊)再进⾏的操作, 也就是说sql语句中的order by也会影响分析函数的执⾏结果: [1] 两者⼀致:如果sql语句中的order by满⾜分析函数分析时要求的排序,那么sql语句中的排序将先执⾏,分析函数在分析时就不必再排序; [2] 两者不⼀致:如果sql语句中的order by不满⾜分析函数分析时要求的排序,那么sql语句中的排序将最后在分析函数分析结束后执⾏排序。
2、分析函数中的分组/排序/窗⼝分析函数包含三个分析⼦句:分组(partition by),排序(order by),窗⼝(rows/range)窗⼝就是分析函数分析时要处理的数据范围,就拿sum来说,它是sum窗⼝中的记录⽽不是整个分组中的记录,因此我们在想得到某个栏位的累计值时,我们需要把窗⼝指定到该分组中的第⼀⾏数据到当前⾏, 如果你指定该窗⼝从该分组中的第⼀⾏到最后⼀⾏,那么该组中的每⼀个sum值都会⼀样,即整个组的总和。
Oracle分析函数Over()
Oracle分析函数Over()阅读⽬录⼀、Over()分析函数1、rank()/dense_rank over(partition by ... order by ...)2、min()/max() over(partition by ...)3、lead()/lag() over(partition by ... order by ...) 取前⾯/后⾯第n⾏记录4、FIRST_VALUE/LAST_VALUE() OVER(PARTITION BY ...) 取⾸尾记录5、ROW_NUMBER() OVER(PARTITION BY.. ORDER BY ..) 排序(应⽤:分页)6、sum/avg/count() over(partition by ..)7、 rows/range between … preceding and … following 上下范围内求值rows between … preceding and … following⼆、其他1、NULLS FIRST/LAST 将空值字段记录放到最前或最后显⽰2、NTILE(n)3、keep(dense_rank first/last)回到顶部⼀、Over()分析函数说明:聚合函数(如sum()、max()等)可以计算基于组的某种聚合值,但是聚合函数对于某个组只能返回⼀⾏记录。
若想对于某组返回多⾏记录,则需要使⽤分析函数。
1、rank()/dense_rank over(partition by ... order by ...)说明:over()在什么条件之上; partition by 按哪个字段划分组; order by 按哪个字段排序;注意: (1)使⽤rank()/dense_rank() 时,必须要带order by否则⾮法 (2)rank()/dense_rank()分级的区别: rank(): 跳跃排序,如果有两个第⼀级时,接下来就是第三级。
Oracle数据库分析函数用法
Oracle数据库分析函数⽤法⽬录1、什么是窗⼝函数?2、窗⼝函数——开窗3、⼀些分析函数的使⽤⽅法4、OVER()参数——分组函数5、OVER()参数——排序函数1、什么是窗⼝函数?窗⼝函数也属于分析函数。
Oracle从8.1.6开始提供窗⼝函数,窗⼝函数⽤于计算基于组的某种聚合值,窗⼝函数指定了分析函数⼯作的数据窗⼝⼤⼩,这个数据窗⼝⼤⼩可能会随着⾏的变化⽽变化。
与聚合函数的不同之处是:对于每个组返回多⾏,⽽聚合函数对于每个组只返回⼀⾏基本语法: ‹分析函数› over (partition by ‹⽤于分组的列名› order by ‹⽤于排序的列名›)。
语法中的‹分析函数›主要由序列函数(rank、dense_rank和row_number等组成)与聚合函数(sum、avg、count、max和min等)作为窗⼝函数组成。
从窗⼝函数组成上看,它是group by 和 order by的功能组合,group by分组汇总后改变了表的⾏数,⼀⾏只有⼀个类别,⽽partiition by则不会减少原表中的⾏数。
恰如窗⼝函数的组成,它同时具有分组和排序的功能,且不减少原表的⾏数。
OVER 关键字表⽰把函数当成窗⼝函数⽽不是聚合函数。
SQL 标准允许将所有聚合函数⽤做窗⼝函数,使⽤ OVER 关键字来区分这两种⽤法。
2、窗⼝函数——开窗OVER 关键字后的括号中经常添加选项⽤以改变进⾏聚合运算的窗⼝范围。
如果 OVER 关键字后的括号中的选项为空,则窗⼝函数会对结果集中的所有⾏进⾏聚合运算。
分析函数 over(partition by 列名 order by 列名 rows between 开始位置 and 结束位置)为什么叫开窗呢?因为在over()括号中的,partition() 函数可以将查询到的数据进⾏单独开⼀个窗⼝处理。
譬如,查询每个班级的学⽣的排名情况,查询每个国家的历年⼈⼝等,诸如此类,都是在查询到的每⼀个班级、每⼀个国家中都开⼀个窗⼝,单独去执⾏命令。
(完整版)ORACLE函数大全
ORACLE函数大全SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数;SQL〉 select ascii('A')A,ascii(’a') a,ascii('0’) zero,ascii(' ') space from dual;A A ZERO SPACE————-——-— -—---———- ---—----- ---————-—65 97 48 322.CHR给出整数,返回对应的字符;SQL〉 select chr(54740) zhao,chr(65) chr65 from dual;ZH C—— -赵 A3.CONCAT连接两个字符串;SQL> select concat('010—’,'88888888')||'转23’高乾竞电话 from dual;高乾竞电话—-——-———-—--——-—010—88888888转234.INITCAP返回字符串并将字符串的第一个字母变为大写;SQL〉 select initcap('smith’) upp from dual;UPP—————Smith5.INSTR(C1,C2,I,J)在一个字符串中搜索指定的字符,返回发现指定的字符的位置;C1 被搜索的字符串C2 希望搜索的字符串I 搜索的开始位置,默认为1J 出现的位置,默认为1SQL> select instr(’oracle traning’,’ra',1,2) instring from dual;INSTRING—-—------96.LENGTH返回字符串的长度;SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;NAME LENGTH(NAME) ADDR LENGTH(ADDR) SALLENGTH(TO_CHAR(SAL))————-———---————-—- —--——---——----—- -———--—-—-—— ----———-————----—-——--—--—---高乾竞 3 北京市海锭区 6 9999.99 77。
ORACLE常用函数功能演示
ORACLE常用函数功能演示文档撰写:孟祥新写在前面:ORACLE内置函数,相当于C语言中的库函数,提供了常规数据库编程中所需的绝大多数基本功能,并且通过函数的组合或嵌套使用,可以发挥其强大的功能。
由于这些内置函数都是由ORACLE公司的编程大家所写,而且其执行代码是内嵌在ORACLE数据库系统中的,因此其执行效率极高。
在数据库编程中能广泛使用ORACLE所提供的内置函数,将大大提高程序代码的执行效率。
“站在高人的肩膀上,将使你变得更高”。
演示之前的环境设置:为了在SQL*PLUS中直观地显示函数返回的结果,我将“头”信息先屏蔽掉。
操作如下:一、单行函数1.数值函数(1)三角函数①SIN、ASIN、SINH(正弦、反正弦、双曲正弦)②COS、ACOS、COSH(余弦、反余弦、双曲余弦)③TAN、ATAN、TANH(正切、反正切,双曲正切)(2)幂、方根及对数运算函数①POWER(m, n)(取m的n次幂)②SQRT(n)(取n的平方根)③EXP(n)(取自然对数底e的n次方根)④LN(n)(取n的自然对数)⑤LOG(m, n)(取以m为底n的对数)以上函数功能演示如下:(3)数值处理函数①ABS(n)(取绝对值)②SIGN(n)(符号函数)③CEIL(n)(取不小于n的最小整数)④FLOOR(n)(取不大于n的最大整数)⑤ROUND(n, [m])(按m精度对n进行4舍5入)⑥TRUNC(n, [m])(按m精度对n进行截取)⑦MOD(m, n)(取m除以n的余数)以上函数功能演示如下:2.字符处理函数(1)对字符串的大小写处理的函数①INITCAP(功能:将字符串中每个单词的首字母,变换为大写。
)②UPPER(功能:将字符串中的所有字母,转换为大写。
)③LOWER(功能:将字符串中的所有字母,转换为小写。
)以上函数功能演示如下:(2)对字符串进行处理的函数①CONCAT(字符串连接函数,也可用|| 替代)功能演示如下:②ASCII(取字符的编码)③CHR(将编码转换为对应的字符)以上函数功能演示如下:④LTRIM(去除左侧空格/指定字符)⑤RTRIM(去除右侧空格/指定字符)⑥TRIM(去除两侧的空格/去除指定字符)以上函数去除空格功能演示如下:以上函数去除指定字符功能演示如下:请注意:在用TRIM去除字符串中指定字符(非空格)时的特殊用法。
oracle(数据类型函数)
select lpad(ename,'10','*') from emp;
rpad //右侧填充 smith***** 10填充长度
select rpad(ename,'10','*') from emp;
trim //清除空格
round(314.1415,-2)结果 300
trunc()//截断
Select trunc(100.256,2) from dual; //结果 100.25
trunc(3.1415,3) 截断 3.141
ceil //向上取整
ceil(3.14)//结果 4 注意:ceilபைடு நூலகம்3.0)结果为3 返回不比3.14小的数据
//输出日期字段对应日后的第一个星期二
ROUND(x,y) //将日期x四舍五入到y指定日期单位(月或年)的第一天
select ename,hiredate,round(hiredate,'month') from emp;
//输出hiredate指定的月四舍五入的数据(如3月16就往前加一月等于4月1日,如3月15就不变还是3月1日)
//格式化输出数字(9代表一位数字,没有就不显示,但对于小数点后的强制显示)
2)select to_char(sal, '$00,000.0000') from emp;
//0代表一位数字,没有显示为0
3)select to_char(sal, 'L99,999.9999') from emp; //L代表本地货币
分析函数详细解析
分析函数详细解析⽬录⼀、概述 (3)1.1 什么是分析函数 (3)1.2 分析函数的作⽤ (3)1.3 分析函数的优缺点 (4)⼆、分析函数语法说明 (4)3.1 语法格式 (4)3.2语句说明 (5)3.2.1 FUNCTION⼦句 (5)3.2.2 PARTITION⼦句 (5)3.2.3 ORDER BY⼦句 (7)3.2.4 WINDOW⼦句 (11)三、分析函数的分类 (25)3.1 排名分析函数 (26)3.2 聚合分析函数 (26)3.3 ⾏⽐较分析函数 (26)3.4 统计分析函数 (26)3.5 ⾏连接分析函数 (26)3.6 其他分析函数 (27)四、分析函数使⽤说明 (27)4.1 排名分析函数 (27)4.1.1 ROW_NUMBER函数说明 (28)4.1.2 RANK函数说明 (29)4.1.3 DENSE_RANK函数说明 (30)4.1.4 FIRST/LAST函数说明 (31)4.1.5 FIRST_V ALUE/LAST_V ALUE函数说明 (34) 4.2 聚合分析函数 (37)4.2.1 SUM函数说明 (37)4.2.2 MAX/MIN函数说明 (38)4.2.3 A VG函数说明 (39)4.2.4 COUNT函数说明 (40)4.3 ⾏⽐较分析函数 (41)4.3.1 LAG/LEAD函数说明 (42)4.4 统计分析函数 (44)4.4.1 RATIO_TO_REPORT函数说明 (44)4.5 ⾏连接分析函数 (46)4.5.1 LISTAGG函数说明 (46)4.6 其它分析函数 (48)4.6.1 CORR函数 (48)4.6.2 COV AR_POP函数 (48)4.6.3 COV AR_SAMP函数 (49)4.6.4 CUME_DIST函数 (49)4.6.5 NTILE函数 (49)4.6.6 PERCENT_RANK函数 (49)4.6.7 PERCENTILE_CONT函数 (50)4.6.8 PERCENTILE_DISC函数 (50)4.6.9 REGR_(Linear Regression) Functions函数 (50)4.6.10 STDDEV函数 (51)4.6.11 STDDEV_POP函数 (51)4.6.12 STDDEV_SAMP函数 (51)4.6.13 V AR_POP函数 (52)4.6.14 V AR_SAMP函数 (52)4.6.15 V ARIANCE函数 (52)五、分析函数专题案例 (52)5.1 专题案例之连续存在问题 (52)5.2 专题案例之填充缺失⾏问题 (57)5.3 专题案例之模拟SQL*PLUS BREAK (58)5.4 专题案例之删除重复⾏问题 (60)5.5 专题案例之⾏列转换问题 (61)5.6 专题案例之累计数不能求和问题 (65)5.7 专题案例之字符串连接问题 (67)5.8 专题案例之集中度问题 (70)5.9 专题案例之计算税负问题 (73)总结 (97)附件 (97)⼀、概述1.1 什么是分析函数随着信息化的逐步发展,企事业单位的经营管理决策由以前的⼈⼯管理逐步向信息化管理进⾏转变。
oracle分析函数
oracle分析函数
Oracle分析函数是指将多行数据集以单行形式显示的函数。
它提供
了一种组合数据,并返回汇总结果的方法。
它们允许Oracle查询来计算
数据的总和、平均值、最大值、最小值等。
Oracle中最常用的分析函数是AVG(平均数)、COUNT(计数)、MAX (最大值)、MIN(最小值)、SUM(求和)和VARIANCE(方差)函数。
AVG函数用于求一组数据的平均值,它可以接受一个或多个参数。
例如,要计算员工表中所有员工的平均年龄,我们可以使用以下语句:SELECT AVG(age) FROM employees;。
COUNT函数用于统计某个列中的值数量,它可以接受一个或多个参数。
例如,要计算员工表中所有员工的数量,我们可以使用以下语句:SELECT COUNT(*) FROM employees;。
MAX和MIN函数用于从一组数据中查找最大值和最小值。
例如,要查
找员工表中年纪最大和最小的员工,我们可以使用以下语句:SELECT MAX(age), MIN(age) FROM employees;。
SUM函数用于计算一组数据的总和。
例如,要计算员工表中所有员工
的工资总和,我们可以使用以下语句:
SELECT SUM(salary) FROM employees;。
VARIANCE函数用于计算数据的方差。
例如,要计算员工表中所有员
工的年龄方差,我们可以使用以下语句:
SELECT VARIANCE(age) FROM employees;。
Oracle聚合函数分析
COVAR_POP,返回一对表达式的总体协方差。
COVAR_SAMP,返回一对表达式的样本协方差。
COUNT,对组内发生的事情进行累计。如果指定*或一些非空常数,count将对所有行计数,如果指定一个表达式,count返回表达式非空赋值的计数,当有相同值出现时,这些相等的值都会被纳入被计算的值;可以使用DISTINCT来记录去掉一组中完全相同的数据后出现的行数。
RATIO_TO_REPORT,该函数计算expression/(sum(expression))的值,它给出相对于总数的百分比,即当前行对sum(expression)的贡献。
REGR_ (Linear Regression) Functions
功能描述:这些线性回归函数适合最小二乘法回归线,有9个不同的回归函数可使用。
FIRST,从DENSE_RANK返回的集合中取出排在最前面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录。
FIRST_VALUE,返回组中数据窗口的第一个值。
LAG,可以访问结果集中的其它行而不用进行自连接。它允许去处理游标,就好像游标是一个数组一样。在给定组中可参考当前行之前的 行,这样就可以从组中与当前行一起选择以前的行。Offset是一个正整数,其默认值为1,若索引超出窗口的范围,就返回默认值(默认返回的是组中第一 行),其相反的函数是LEAD
REGR_SLOPE:返回斜率,等于COVAR_POP(expr1, expr2) / VAR_POP(expr2)
REGR_INTERCEPT:返回回归线的y截距,等于
AVG(expr1) - REGR_SLOPE(expr1, expr2) * AVG(expr2)
Oracle基础函数汇总
7
语法:lead(lag) (expression[,offsrt[,default])
8
over ([query partition clause] order by clause)
9
10
--累加合计
11
SUM(字段) over(PARTITION BY 字段 ORDER BY 字段 rows 10000000 preceding) AS
3
4 --avg 函数名
5 --(sal)是分析函数的参数,每个函数有0~3个参数,参数可以是表达式
6 --over 是一个关键字,用于标识分析函数
7 --partition by deptno 是可选的分区子句
8
9
10 --等级函数,排序
11 select t.c_store_id,sum(t.tot_qty),
9 --mod
--取余数
10 select mod(20,3)from dual; --2
11
12
13 --常用日期函数
14 /*--运算规律
15
日期 + 数值=日期
16
日期-数值=日期
17
日期-日期=数值(天数)
18 */
19 select sysdate,sysdate+2,sysdate-3,sysdate-
"字段名称"
12
---
13
with order_i as --临时表定义
14
1 --对账单预计算程序
2 CREATE OR REPLACE PROCEDURE rp_cusrecvcheck_generate(p_pi_id NUMBER) AS
Oracle10gR2分析函数(中英对照版)
Oracle10gR2分析函数(中英对照版)Orac c le100gR2分析函函数(Translat t ing By ca a izhuoyi)说明明:1、 2、 1 A Ana agg callewind calc of ro 分析分组⼀⾏物理Ana ORD befo in th 分析有wh 数只Ana repo 分析anaana原⽂中底⾊原⽂中淡蓝⾊nalytic Fu alytic function regate funct ed a window dow of rows culations for ows or a log 析函数通过将组返回多⾏值⾏都对应有⼀理⾏进⾏度量alytic functio DER BY claus ore the analy he select list 析函数是查询here ,gro 只能⽤于sel alytic functio orting aggre 析函数通常⽤alytic_fun alytic_fun 为黄的部分翻⾊字体的⽂字unctionsns compute tions in that w and is def s is defined. the current ical interval 将⾏分组后,再值。
分析函数根⼀个在⾏上滑量,也可以使ns are the la se. All joins ytic function t or ORDER B 询中除需要在up by ,和h ect 列或ord ns are comm gates. ⽤于计算数据nction::=nction([ 翻译存在商榷字,不宜翻译an aggrega they return fined by the The window row. Window such as tim 再计算这些分根据analyt 滑动的窗⼝。
该使⽤逻辑区间ast set of op and all WHER s are proces BY clause.在最终处理的o having ⼦句der by ⼦句monly used 据累积值,数=arguments 榷之处,请⼤⼤家踊跃提意意见;译,保持原样样。
oracle中常用的函数
oracle中常用的函数Oracle是一种流行的关系型数据库管理系统,它提供了许多强大的函数来处理数据。
以下是Oracle中常用的函数:1. 字符串函数Oracle提供了许多字符串函数来处理文本数据。
其中一些常用的函数包括:- SUBSTR:用于提取字符串的一部分。
- INSTR:用于查找字符串中的子字符串。
- CONCAT:用于连接两个或多个字符串。
- REPLACE:用于替换字符串中的子字符串。
- UPPER和LOWER:用于将字符串转换为大写或小写。
2. 数值函数Oracle还提供了许多数值函数来处理数字数据。
其中一些常用的函数包括:- ROUND:用于将数字四舍五入到指定的小数位数。
- TRUNC:用于截断数字到指定的小数位数。
- MOD:用于计算两个数字的余数。
- ABS:用于计算数字的绝对值。
- SIGN:用于确定数字的符号。
3. 日期函数Oracle还提供了许多日期函数来处理日期和时间数据。
其中一些常用的函数包括:- SYSDATE:用于返回当前日期和时间。
- ADD_MONTHS:用于将指定的月数添加到日期中。
- MONTHS_BETWEEN:用于计算两个日期之间的月数。
- EXTRACT:用于提取日期中的特定部分,如年、月、日、小时、分钟等。
- TO_CHAR和TO_DATE:用于将日期和时间数据转换为字符串或从字符串转换为日期和时间数据。
4. 聚合函数Oracle还提供了许多聚合函数来计算数据的总和、平均值、最大值、最小值等。
其中一些常用的函数包括:- SUM:用于计算数值列的总和。
- AVG:用于计算数值列的平均值。
- MAX和MIN:用于查找数值列中的最大值和最小值。
- COUNT:用于计算行数或非空值的数量。
总结Oracle提供了许多强大的函数来处理数据。
这些函数可以帮助开发人员更轻松地处理和分析数据,从而提高应用程序的性能和可靠性。
熟练掌握这些函数可以使开发人员更加高效地编写SQL查询和存储过程。
Oracle分析函数参考手册.doc
GROUP BY manager_id
) b
WHERE a.manager_id=b.manager_id
ORDER BY a.manager_id
--Order by按相应的值(hire_date)进行排序并累计统计
SELECT
manager_id,
first_name||' '||last_name employee_name,
--Partition by Order by首先按相应的值(manager_id,hire_date)排序,并按order by的值(hire_date)进行累计统计
--该平均值由当前员工和与之具有相同经理的前一个和后两个三者的平均数得来
SELECT
manager_id,
first_name||' '||last_name employee_name,
Oracle分析函数——SUM,AVG,MIN,MAX,COUNT
SUM
功能描述:该函数计算组中表达式的累积和。
SAMPLE:下例计算同一经理下员工的薪水累积值
MIN
功能描述:在一个组中的数据窗口中查找表达式的最小值。
SAMPLE:下面例子中dept_min返回当前行所在部门的最小薪水值
CUBE:按照OLAP的CUBE方式进行数据统计,即各个维度均需统计
ROLLUP:
SELECT
department_id,
manager_id,
employee_id,
first_name||' '||last_name employee_name,
Oracle多行查询(函数)
Oracle多⾏查询(函数)多⾏函数可以认为是操作多⾏数据的函数关于单⾏函数:1取数据总和2 SQL> select sum(sal) from emp;3取⾏数总和4 SQL> select count(*) from emp;5取平均值6 SQL> select sum(sal)/count(*) ⼀,avg(sal) ⼆ from emp;789 SQL> --null值 5. 组函数(多⾏函数)⾃动滤空;10 SQL> select count(*),count(comm) from emp;11 COUNT(*) COUNT(COMM)12 ---------- -----------13 14 414 SQL> --嵌套滤空函数来屏蔽他的滤空功能15 SQL> select count(*),count(nvl(comm,0)) from emp;16 COUNT(*) COUNT(NVL(COMM,0))17 ---------- ------------------18 14 141920 SQL> --多个列的分组21 SQL> --group by :先按照第⼀个列分组;再按照第⼆列分组,以此类推22 SQL> select deptno,job,sum(sal)23 2 from emp24 3 group by deptno,job25 4 order by 1;2627 SQL> --where和having的区别:where后⾯不能使⽤多⾏函数28 SQL> --求10号部门的平均⼯资29 SQL> select deptno,avg(sal)30 2 from emp31 3 group by deptno32 4 having deptno=10;3334 DEPTNO AVG(SAL)35 ---------- ----------36 10 2916.666673738 SQL> group by的增强39 select deptno,job,sum(sal) from emp group by rollup(deptno,job);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用于数值数据的列函数
SUM(column) AVG(column)
多行函数
思考: 用GROUP BY 进行数据分组(出现在select后的字段必须在group by 后出现) 1.求每个部门的平均薪水 2.求各部门相同工种员工的平均工资 HAVING子句的使用 1.求员工人数多于4人的部门内员工的薪水和 2.求各部门CLERK工种员工的平均工资,并以平均工资降序 排列 (注:组函数的嵌套与单行函数不同,最多只能嵌套两层) Nhomakorabea
补充:分析函数
分析函数为每组记录返回多个行
以下三个分析函数用于计算一个行在一组有序行中的排 位,序号从1开始
– ROW_NUMBER 返回连续的排位,不论值是否相等 – RANK 具有相等值的行排位相同,序数随后跳跃 – DENSE_RANK 具有相等值的行排位相同,序号是连续的
SELECT d.dname, e.ename, e.sal, DENSE_RANK() 在各部门内按员工的工资排位,工资相同的再按 comm降序 按员工的工资排名 SELECT deptno, ename, sal, ORDER comm, RANK() OVER OVER OVER (PARTITION BY e.deptno BY e.sal DESC) SELECT ename, job, deptno, sal, ROW_NUMBER() (PARTITION ORDER sal DESC, comm DESC) (ORDER BY BY deptno sal DESC) AS BY SAL_RANK AS DENRANK RANK FROM SCOTT.EMP; FROM emp e, dept d WHERE e.deptno = d.deptno; FROM emp;
SQL函数
单行函数
– 只对单行数据进行操作,并且每行只返回 一个结果
多行函数
– 对多数据行的群组进行操作,并且每组只 返回一个结果
多行函数
组函数(聚合函数) MAX(column) MIN(column) COUNT(*) COUNT(column) COUNT(distinct column) 功能描述 列中最大值 列中最小值 表中行的数量 列不为null的行数 Column指定列中相异值的数量 列中所有值的总和 列中所有值的平均数 用于字符、数值、日期型数据的列函数
补充:分析函数
思考:
1.找出每个部门工资最高的人(只选一个) 2.找出每个部门工资最高的人(包括并列第一) 3.找出每个部门工资最高的人(若某部门里最 高工资的人有多个,选择comm高的)