`

orace评级函数

    博客分类:
  • sql
SQL 
阅读更多

rank() over (order by XX):

 /***********
    这个sql可以看出 rank其实就是拿当前的一列和别的行相同的列进行排列
 */
 select 
   t.amount 
   ,rank() over (order by t.amount desc) as rank
  from all_sales t
 where t.year=2003
 and t.amount is not null
 order by t.amount desc

 结果为:

1	32754.19	1
2	29057.45	2
3	27264.84	3
4	25214.56	4
5	25057.45	5
6	24137.83	6
7	24057.45	7
8	23754.19	8
9	23264.84	9
10	22754.19	10
11	22754.19	10
12	22137.83	12
 

加上group by

select 
t.prd_type_id
,sum(amount)  --有没有sum(amount)都是一样的。
,RANK() OVER(ORDER BY avg(amount) desc )as rank  --它的意思是在此分组的情况下 此时sum(amount)和别的行的sum(amount)的排列
,DENSE_RANK() OVER (ORDER BY SUM(amount) desc) as dense_rank  --排列相同的情况下,也有编号
 from all_sales t
 where t.year=2003
 and t.amount is not null
 group by t.prd_type_id
 order by t.prd_type_id

 

结果:

1	1	905081.84	1	1
2	2	186381.22	4	4
3	3	478270.91	2	2
4	4	402751.16	3	3

 

 

结合partition by子句使用:

select 
t.prd_type_id
,t.month
,sum(amount)
,rank() over(partition by t.month order by sum(t.amount) desc) as rank  --加上了partition说明 month这列是子分组,排列是按照 t.prd_type_id,和sum(t.amount)来进行排列的
 from all_sales t
 where t.year=2003
 and t.amount is not null
 group by t.prd_type_id,t.month  --(1)总的来说是按照 2列来进行分组查找的,
 order by t.prd_type_id,t.month

 

这也说明分组最少要有2组使用partition 才有意义,如果是一组,去掉一个子分组 就是分组那个组,等于没分组。

结果:

1	1	1	38909.04	1
2	1	2	70567.9	1
3	1	3	91826.98	1
4	1	4	120344.7	1
5	1	5	97287.36	1
6	1	6	57387.84	1
7	1	7	60929.04	2
8	1	8	75608.92	1
9	1	9	85027.42	1
10	1	10	105305.22	1
11	1	11	55678.38	1
12	1	12	46209.04	2
13	2	1	14309.04	4
14	2	2	13367.9	4
15	2	3	16826.98	4
16	2	4	15664.7	4
17	2	5	18287.36	4
18	2	6	14587.84	4
19	2	7	15689.04	3
20	2	8	16308.92	4
21	2	9	19127.42	4
22	2	10	13525.14	4
23	2	11	16177.84	4
24	2	12	12509.04	4
25	3	1	24909.04	2
26	3	2	15467.9	3
27	3	3	20626.98	3
28	3	4	23844.7	2
29	3	5	18687.36	3
30	3	6	19887.84	3
31	3	7	81589.04	1
32	3	8	62408.92	2
33	3	9	46127.42	3
34	3	10	70325.29	3
35	3	11	46187.38	2
36	3	12	48209.04	1
37	4	1	17398.43	3
38	4	2	17267.9	2
39	4	3	31026.98	2
40	4	4	16144.7	3
41	4	5	20087.36	2
42	4	6	33087.84	2
43	4	7	12089.04	4
44	4	8	58408.92	3
45	4	9	49327.42	2
46	4	10	75325.14	2
47	4	11	42178.38	3
48	4	12	30409.05	3

 

分享到:
评论

相关推荐

    Orace Essbase数据仓库函数大全

    Orace Essbase数据仓库函数大全,具有详细的函数说明和使用方法

    Orace与SQL常用函数对照文档

    ### Orace与SQL常用函数对照知识点详解 #### 一、ASCII 函数 - **功能**:返回与指定的字符相对应的十进制数值。 - **语法**:`ASCII(字符)` - **示例**: - `SELECT ASCII('A') A, ASCII('a') a, ASCII('0') zero...

    oracle常用函数.rar

    Oracle数据库是世界上最广泛使用的数据库系统之一,其丰富的函数集使得数据处理变得更为高效。本压缩包文件"oracle常用函数.rar"包含了一些关于Oracle数据库的重要知识点,主要包括“connect by”用法、SQL优化以及...

    Oracle分析函数

    ### Oracle分析函数详解 #### 一、概述 Oracle分析函数是一种强大的工具,它允许用户对查询结果进行复杂的分析处理,而无需多次查询数据库或编写复杂的程序逻辑。这大大简化了开发人员的工作,尤其是在处理大数据...

    orace性能优化高级培训

    orace性能优化

    stampgis连接orace数据库监听配置

    stampgis连接orace数据库监听配置

    ORACE的学习笔记

    - Oracle提供了`MAX`, `MIN`, `AVG`, `SUM`, `COUNT`等聚合函数用于数据统计,如:`SELECT MAX(sal), MIN(sal) FROM emp;` - 结合`GROUP BY`子句进行分组统计,如:`SELECT AVG(sal), MAX(sal), deptno FROM emp ...

    orace rac 功能测试

    Oracle RAC,全称为Real Application Clusters,是Oracle数据库的一项高级特性,用于构建高可用性和高性能的数据库集群。Oracle RAC允许多个服务器节点共享同一份物理数据库,从而提供连续的服务和负载均衡。...

    Orace基础经典

    3. **函数与过程**:在Oracle中,函数和过程是PL/SQL编程的一部分,它们可以用来封装复杂的业务逻辑。函数返回一个值,而过程不返回值,但可以修改数据库状态。熟悉如何创建、调用和管理这些函数和过程是提高数据库...

    orace 导入导出数据库

    ### Oracle 数据库导入导出详解 #### 一、Oracle 导出(Export)操作 **1.... 在Oracle中,我们可以通过`exp`命令来进行数据库的导出工作。若要将一个名为`TEST`的数据库进行完全导出,可以使用以下命令: ...

    orace 财务操作手册

    ### Oracle EBS 财务模块操作手册关键知识点解析 #### 一、系统应用介绍 **1.1 系统配置和安装** - **配置 Hosts 文件:** - 在 Windows 目录下查找 `Hosts` 文件,通常位于 `C:\WINNT\system32\drivers\etc\...

    Orace数据导出文件版本兼容修改工具

    "Orace数据导出文件版本兼容修改工具"就是为了解决这一特定问题而设计的。 该工具的主要功能是调整DMP文件的内部结构,使其符合目标数据库版本的要求。在Oracle数据库系统中,DMP文件是由`expdp`(数据泵导出)命令...

    Orace PPT 01

    3. Function-based索引:基于列的函数结果创建索引,用于优化包含函数的查询。 4. Clustered索引:数据行的物理顺序与索引顺序相同,提升范围查询性能。 六、Oracle安全性 Oracle提供了丰富的安全特性,如: 1. ...

    orace性能优化高级培训.rar

    - **索引优化**:何时使用B树索引、位图索引、函数索引,以及分区索引的优势。 - **绑定变量**:理解其对执行计划的影响,以及如何避免绑定变量漂移。 - **SQL重写**:通过SQL Profiles和SQL Plan Baselines来...

    orace数据仓库

    5. 查询与分析:介绍SQL查询优化技巧,以及使用Oracle的分析函数和OLAP功能进行深度分析。 6. 性能监控与调优:讲解如何监控数据仓库的性能,识别瓶颈,并实施相应的优化策略。 7. 安全管理:讨论如何设置权限,...

    orace导入导出的操作

    在Oracle数据库管理中,数据导入导出是至关重要的操作,特别是在数据迁移、备份与恢复、系统复制等场景中。Oracle提供了多种工具来实现这一目的,其中最常用的是`expdp`(Export Data Pump)和`impdp`(Import Data ...

Global site tag (gtag.js) - Google Analytics