环境:windows 2000 server + Oracle8.1.7 + sql*plus
目的:以oracle自带的scott模式为测试环境,主要通过试验体会分析函数的用法。
Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。也就是说对主查询的每行都返回一个over函数运算            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2011-03-03 17:18:35
                            
                                1200阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            :https://www..com/dongyj/p/5992083.html 、、、、 注意,这里不需要聚合函数group by,如: SELECT t.*, sum(columnA) over(order by id desc) FROM table_name t ; \\\\            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2017-11-30 15:35:00
                            
                                97阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            http://database.51cto.com/art/201010/231134.htm             
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-07-10 09:29:34
                            
                                69阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            准备工作: table:oracle用户scott下的emp表 ; 一. Oracle 从8.1.6开始提供分析函数            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-09-08 15:15:30
                            
                                134阅读
                            
                                                                             
                 
                
                             
         
            
            
            
             
SQL> select deptno,ename,sal
   2   from emp
   3   order by deptno;
DEPTNO ENAME          SAL
---------- -------            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                            精选
                                                        
                            2012-06-28 16:34:42
                            
                                298阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Over()分析函数  说明:聚合函数(如sum()、max()等)可以计算基于组的某种聚合值,但是聚合函数对于某个组只能返回一行记录。若想对于某组返回多行记录,则需要使用分析函数。rank()/dense_rank over(partition by ... order by ...)说明:over()在什么条件之上;   partition by 按哪个字段划分组;  order by 按哪个            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-04-28 21:51:15
                            
                                469阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            oracle over函数select t1.*, (t1.score - t3.avgs) as gaps  from test_student_score t1,       (select t2.subject_id, avg(t2.score) as avgs          from test_student_score t2         group by t2.s            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-07-27 17:54:51
                            
                                367阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            用SCOTT/TIGER登录。查询表EMP:查询语句:SELECT ENAME, SUM(SAL) OVER (PARTITION BY JOB) FROM EMP;结果:查询语句:SELECT ENAME, SUM(SAL) OVER (ORDER BY JOB) FROM EMP;结果:            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-04-26 19:55:33
                            
                                308阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            原文见我得博客:点击打开链接1、分析函数:1)分析函数:Oracle从8.1.6开始            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-06-16 07:16:15
                            
                                753阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            https://www.nowcoder.com/practice/58824cd644ea47d7b2b670c506a159a6?tpId=82&tags=&title=&difficulty=0&judgeStatus=0&rp=1 按照salary的累计和running_total,其中ru ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-09-30 16:08:00
                            
                                405阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            SELECT
    s.stat_dt
   ,s.day_sale_amt_val--金额
   ,s.day_sale_num_val---数量
   ,s.sale_num_sort
   ,s.sale_amt_sort
&nb            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2012-03-31 11:44:01
                            
                                2599阅读
                            
                                                                             
                 
                
                             
         
            
            
            
                  over() 函数 是对 分析函数的一种条件解释,直接点就是 给分析函数加条件吧。  在网上看见比较常用的就是 与 sum()、rank() 函数使用。接下来就用分析下两种函数结合over的用法。  以下测试使用的orace默认的 scott用户下的emp表数据。  1.sum()结合over()  Sql代码  select a.em            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                            精选
                                                        
                            2015-09-07 16:05:11
                            
                                399阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Oracle 语法之 OVER (PARTITION BY ..)select * from test数据:A   B   C 1   1   1 1   2    2 ITION BY ...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-04-11 12:43:54
                            
                                249阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            实现业务场景需求代购商从外采购一批化妆品,总数量为30份。现有一个用户需求登记表,记录每个用户需要代购的数量。因为该批次采购不能完全覆盖所有登记用户的需求,现需要将已采购到货的商品尽可能发放给更多的用户。按如下登记表,请使用一个SQL语句统计出可以发放的用户名单。用户登记表(SHANHY_TEST)用户编号(snum)需求数量(icount)S0012S00...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-09-01 09:29:52
                            
                                280阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            实现业务场景需求商从外采购一批化妆品,总数量为30份。现有一个用户需求登记表,记录每个用户需要的数量。因为该批次采购不能完全覆盖所有登记用户的需求,现需要将已采购到货的商品尽可能发放给更多的用户。按如下登记表,请使用一个SQL语句统计出可以发放的用户名单。用户登记表(SHANHY_TEST)用户编号(snum)需求数量(icount)S0012S00...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-02-25 17:15:49
                            
                                286阅读
                            
                                                                             
                 
                
                             
         
            
            
            
             
格式:
  可以开窗的函数(..) over(..)
  over中防止分组的条件和分组的排序,不过分组使用的不再是GROUP BY而是PARTITION BY,表示开窗
-- 建表
CREATE table tb_sc(
uName varchar2(10),
uCourse varchar2(10),
Uscore varchar2(10)
);
-- 插入数据
INSERT IN            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2016-12-28 23:56:00
                            
                                146阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            一、rank()/dense_rank() over(partition by ...order by ...)现在客户有这样一个需求,查询每个部门工资最高的雇员的信息,相信            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-08-18 13:52:05
                            
                                96阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            转自:http://hi.baidu.com/%D6%F1%BC%E4%B8%F3/blog/item/59c256389f326ac8d462253d.html
类似 sum(...) over ... 的使用
  
  1.原表信息:
  
  SQL> break on deptno skip 1 -- 为效果更明显,把不同部门的数据隔段显示。
  SQL> select deptno,ename,sal
  2 from emp
  3 order by deptno;
  
    DEPTNO ENAME       SAL
  ---------- ---------- ----------
      10 CLARK      2450
        KING       5000
        MILLER      1300
  
      20 SMITH       800
        ADAMS      1100
        FORD       3000
        SCOTT      3000
        JON            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                            精选
                                                        
                            2013-02-22 13:32:45
                            
                                407阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            over()是一种视窗函数,与分析函数结合使用,可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序。
over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。 
其参数:over(partition by columnname1 order by columnname2) 
含义:按columname1指定的字段进行分组排序,            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2012-07-22 19:42:47
                            
                                1318阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的。注:标题中的红色order by是说明在使用该方法的时候必须要带上order by。一、rank()/dense_rank() over(partition by ...order by ...)现在客户有这样一个需求,查询每个部门工资最高的雇员的信息,相信有一定oracle应用知识的同学都能写出下            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2015-05-19 17:13:57
                            
                                1234阅读