`

oracle中的over()方法

 
阅读更多

   在涉及到一些复杂逻辑的查询中,简单的SQL不能有效查出想要的结果,需要借助oracle内置函数,比如over(),over方法是不单独使用,需要配合其它的方法来使用。先在简单介绍

1.rank()over()

   现在需要查询某个系的所有班级的成绩前三名名单:

   SQL可以这样来写

 

select name,class,scoure,sno from                                                                       
   (                                                                           
    select name,class,scoure,sno,rank()over(partition by class order by score) mm 
	from chengji
	where depart='计算机'
   )                                                                            
where mm<=3

    加入有特殊的情况,有班里的两个同学的成绩是一样的,比如前两名的成绩是一样的,是怎么处理的。

    rank()over() 会排名 1 1 3 ……,是不连续的。

2.dense_rank()over(order by 列名 排序)

  那么假如我不想这样排序的,希望的排名的结果是, 1 1 2 ……此时,dense_rank()over()就派上用场了。

  dense_rank()over()得到的结果是连续的。

3.sum(column1) over(partition by  column1  order by  column1 )

  该方法的作用是连续求和。假如我们有这样的需求,查看某电子商务网站五月份每天消费情况趋势,即第一个顾客A消费了100,第二个顾客B消费了80,那么对应的趋势为 A 100,B 180 ……

 

 

select cn,uin,buy_time,JEWEL_TOTAL,
	sum(JEWEL_TOTAL).over(partition by to_date(buy_time,'yyyy-mm-dd' order by buy_time) total 
order by buy_time 
where buy_time>=to_date('2012-05-01','yyyy-mm-dd') and 
buy_time<to_date('2012-06-01','yyyy-mm-dd')
 

 

 

 

 

 

 

 

 

 

 

 

0
1
分享到:
评论

相关推荐

    ORACLE的OVER函数使用技巧

    ORACLE的OVER函数使用技巧ORACLE的OVER函数使用技巧ORACLE的OVER函数使用技巧

    ORACLE_OVER函数

    在Oracle数据库中,OVER函数是用于实现窗口函数(Window Functions)的重要组成部分。窗口函数允许我们执行更复杂的数据分析操作,如计算累计总和、排名等。这在开发报表时非常有用,能够让我们在查询结果中直接进行...

    Oracle查询中OVER (PARTITION BY ..)用法

    Oracle查询中的`OVER (PARTITION BY ..)`是一个窗口函数,它允许我们在数据集上执行计算,但不是在整个结果集上,而是针对每个分区。这部分功能非常强大,可以用于复杂的分析和排序任务,尤其是在处理分组数据时。在...

    Oracle开发的over函数

    接下来,我们将详细介绍Oracle中的分析函数及其使用方法。 #### 二、Oracle分析函数简单实例 为了更好地理解Oracle分析函数的作用,我们先来看一个简单的示例。假设有一个员工表EMPLOYEE,其中包含员工ID(EMP_ID...

    Oracle row_number()over

    Oracle 中的 row_number()over 函数是一个分析函数,用于生成一个连续的数字序列,可以根据某个列或多个列对数据进行分区和排序,然后生成一个唯一的序号。 row_number()over 函数的基本语法为: ``` row_number()...

    ORACLE中OVER函数的用法.doc

    ORACLE中OVER函数的用法.doc

    oracle分析函数over_及开窗函数.txt

    本文将详细介绍Oracle中的`OVER`子句以及几种常用的开窗函数,包括`ROW_NUMBER()`, `RANK()`, `DENSE_RANK()`和`LAG()`等。 #### 二、基本概念 - **`OVER`子句**:`OVER`子句用于指定分析函数的作用范围,它可以...

    Oracle百分比分析函数RATIO_TO_REPORT() OVER()实例详解

    Oracle数据库中的RATIO_TO_REPORT()函数是一个非常有用的分析函数,尤其在进行数据比例分析和比较时。这个函数能够计算一个值相对于所有值总和的比例,返回的结果是一个百分比。配合OVER()子句,它可以用于全局或者...

    oracle分析函数row_number() over()使用

    Oracle的分析函数row_number() over()是数据库查询中一种强大的工具,它用于对数据集进行分组和排序,尤其在处理重复数据或者实现排名时非常有用。在Oracle SQL中,row_number()函数会为每一行生成一个唯一的数字,...

    Oracle中的分析函数详解

    Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,尤其在企业级应用中占据主导地位。其中,Oracle的分析函数是其强大的特性之一,它允许用户在单个SQL查询中执行复杂的分析操作,而无需使用子查询或者自...

    oracle分析函数在BI分析中应用事例

    Oracle分析函数在商业智能(BI)分析中扮演着至关重要的角色,它们允许用户对数据集进行复杂的计算和分析,而不必依赖多表联接或子查询。这些函数极大地提升了SQL查询的效率和灵活性,尤其在处理大数据量时。以下是...

    ORACLE去除重复数据方法

    本文介绍了两种在Oracle数据库中去除重复数据的方法:一是通过子查询实现,二是利用窗口函数`ROW_NUMBER()`。这两种方法各有优劣: - **子查询方法**适用于大多数Oracle版本,但可能不够直观,尤其是在处理复杂数据...

    Oracle中rank,over partition函数的使用方法

    在Oracle数据库中,`RANK()`, `OVER()`, `PARTITION BY` 是窗口函数的重要组成部分,它们在数据处理和分析中发挥着至关重要的作用。本文将深入探讨这些函数的用法,通过实例来帮助理解它们的功能和应用场景。 首先...

    Oracle Developer使用指南(16-19_over)

    这份"Oracle Developer使用指南(16-19_over)"涵盖了从版本16到19的相关内容,旨在帮助用户深入理解和有效利用这个强大的开发环境。 在Oracle Developer中,主要包含了以下几个关键组件: 1. **Oracle Forms**: ...

    oracle select top的方法

    ### Oracle Select Top 的方法 #### 一、问题背景与需求分析 在Oracle数据库中,标准SQL语法并不直接支持类似于`SELECT TOP 100 * FROM table_a`这样的语句来直接获取表中的前N行数据。然而,在实际业务场景中,...

    oracle中如何删除重复的记录

    以上介绍了两种在Oracle数据库中删除重复记录的方法。第一种方法适用于数据量较小的情况,第二种方法则更适合处理大数据量的场景。实际应用时,可以根据具体情况选择合适的方法。需要注意的是,在进行删除操作之前...

    java笔记\Oracle里sql不能用limit的处理

    下面,我们将详细介绍Oracle中SQL不能用Limit的处理方法。 一、使用RowNum实现分页查询 在Oracle中,我们可以使用RowNum函数来实现分页查询。RowNum函数可以返回当前记录的行号,从1开始。我们可以使用RowNum函数...

    Oracle 语法之 OVER (PARTITION BY ..) 及开窗函数(转载)

    在Oracle数据库中,`OVER (PARTITION BY ...)` 是一种非常强大的功能,它允许用户在数据集上进行窗口操作。这在数据分析、报表制作以及复杂查询中极为常见。 #### 二、开窗函数简介 开窗函数(Window Functions)...

Global site tag (gtag.js) - Google Analytics