`
dazhi2010
  • 浏览: 106753 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Oracle中rank和dens_rank方法用法

阅读更多

select a.*,rank()over(order by cj desc) pm
from(
    (select 'a' name,1 cj
    from dual
    ) union(
    select 'b' name,1 cj
    from dual
    ) union(
    select 'c' name,2 cj
    from dual
    ) union(
    select 'd' name,3 cj
    from dual
    ) union(
    select 'e' name,3 cj
    from dual
    ) union(
    select 'f' name,4 cj
    from dual
    ) union(
    select 'g' name,0 cj
    from dual
    )
) a
order by pm

----------------------------------------------result---------
  NAME CJ  PM
  f 4 1
  d 3 2
  e 3 2
  c 2 4
  a 1 5
  b 1 5
  g 0 7
----------------------------------------------------------------------------------------------------------
  首先,要了解rank在英语的意思:等级.也就是说这是一个给数据确定等级的函数.

  以销售为例,有地区,年,月,销售员,销售额,记录这五个字段.我们可以按地区,年,月,销售额对销售员进行排序,这样对销售员来说就相当于有一个等级概念了,第一名就是销售最高的......,如果我们要找出每个地区,年,月,销售额的前三名销售员.SQL如何写?

  Sql代码

  SELECT area_code, YEAR, MONTH, saleroom,saler

  RANK () OVER (PARTITION BY area_code,year ,month ORDER BY area_code,year,month,saleroom ) RANK

  FROM t_sale

  Sql代码

  SELECT

  RANK(‘SHENZHEN‘,2007,5,50000)  WITHIN GROUP

  (ORDER BY area_code,year,month,saleroom) Rank

  FROM T_SALE

  上面这个SQL就可以搞定了.要注意的是,Rank()里的参数必须为常数,或常值表达式,里面参数的个数,类型也要和order by后字段的类型相对应.

  上面就是Rank函数的两个用法.另外还有一个dense_rank(),它的用法和rank()一样,只是计算等级的方式不同.例如上面的

  1,2,3,3,3,6.用dense_rank() 就是1,2,3,3,3,4.

  其实现在Oracle对于rank和dense_rank已经支持合计功能,不过这次我仅仅使用了其分析功能。具体语法如下:RANK ( ) OVER ( [query_partition_clause] order_by_clause )。

  下面给出一些来自网上的示例

  TABLE:S (subject,mark)

  数学,80

  语文,70

  数学,90

  数学,60

  数学,100

  语文,88

  语文,65

  语文,77

  现在我想要的结果是:每门科目的前3名的分数

  数学,100

  数学,90

  数学,80

  语文,88

  语文,77

  语文,70

  那么语句就这么写

  select * from (select rank() over(partition by subject order by mark desc) rk,S.* from S) T

  where T.rk<=3;

  dense_rank与rank()用法相当,但是有一个区别:dence_rank在处理相同的等级时,等级的数值不会跳过。rank则跳过。 row_number() 补充;

  例如:表

  A B C

  a     liu     wang

  a     jin     shu

  a     cai     kai

  b     yang   du

  b     lin     ying

  b     yao    cai

  b     yang   99

  例如:当rank时为

  select m.a,m.b,m.c,rank() over(partition by a order by b) liu from test3 m

  A     B      C     LIU

  a     cai     kai     1

  a     jin     shu    2

  a     liu     wang   3

  b     lin     ying    1

  b     yang   du     2

  b     yang   99     2

  b     yao    cai     4

  而如果用dense_rank时为

  select m.a,m.b,m.c,dense_rank() over(partition by a order by b) liu from test3 m

  A     B      C     LIU

  a     cai     kai     1

  a     jin     shu    2

  a     liu     wang   3

  b     lin     ying    1

  b     yang   du     2

  b     yang   99     2

  b     yao    cai     3

  而如果用row_number()时为

  select m.a,m.b,m.c,row_number() over(partition by a order by b) liu from test3 m

  A     B      C     LIU

  a     cai     kai     1

  a     jin     shu    2

  a     liu     wang   3

  b     lin     ying    1

  b     yang   du     2

  b     yang   99     3

  b     yao    cai     4

  现在RANK 就是1,2,3,3,3,6,有了这个字段,就很容易得到前三名的销售员了.
(非原创,以前收藏在txt文档里的一篇文章,放在这里防止丢了,^_^)

分享到:
评论

相关推荐

    sw_dens_计算海水密度_

    “sw_dens.m”函数的使用方法可能包括以下步骤: 1. 输入参数:输入盐度(S)、温度(T)和压力(P)的值。这些值需要是适当的物理单位,并确保在合理的范围内,比如盐度在0-40 PSU之间,温度在冰点至40°C之间,压力从...

    matlab.rar_There There_comp_gauss_dens_val_environmentwev

    3. 环境变量的使用:在MATLAB中设置和使用环境变量,以影响程序行为。 4. 数据分析与可视化:可能涉及数据处理和结果展示,MATLAB提供了丰富的工具进行数据操作和图表生成。 深入理解这些内容,有助于解析和利用这...

    sw_dens_海洋_SWDENS_

    在开放海洋中,海水的密度变化主要由温度和盐度控制,而在深海区域,由于压力的显著增加,压力对密度的影响也变得尤为重要。海水密度的单位通常用千克每立方米(kg/m³)表示,其与海水的物理状态有着密切的关系。 ...

    Dens_lammpsrdf均值_lammps_

    《LAMMPS中的RDF计算与均值分析》 LAMMPS(Large-scale Atomic/Molecular Massively Parallel Simulator)是一款强大的...因此,掌握LAMMPS中的RDF计算及其后处理技术是每个使用该软件的科研工作者必备的技能之一。

    dens_labs:这只是我第八学期进行的所有数据加密和网络安全实验室的转储

    dens_labs 这只是我第八学期进行的所有数据加密和网络安全实验室的转储

    fluent-UDF_udf_常用UDF_fluent_fluentudf.zip

    这个UDF定义了一个随时间变化的密度函数,可以在Fluent中作为时间依赖的边界条件使用。 五、UDF调试与优化 1. 调试:使用Fluent的“Debug”选项,结合日志输出,定位并解决问题。 2. 优化:关注计算效率,合理使用...

    ImageDenoising.rar_denosing_denosing wavelet_image denosing_wave

    标签中的关键词如"denosing", "denosing_wavelet", "image_denosing"和"wavelet_denosing"都与图像去噪和小波去噪方法有关。压缩包内的文件名称包括"noise.jpg",可能是一个含有噪声的图像样本;"denS2D.m", "den2.m...

    dens-pens

    "dens-pens"可能展示了如何创建和使用这些组件来提高效率。 为了深入理解"dens-pens"项目,你需要解压“dens-pens-main”并查看内部文件,包括HTML文件、CSS文件(如果有的话)和可能的JavaScript文件。通过阅读和...

    W2DEN_APRS_Tracker:Dens APRS追踪器

    W2DEN_APRS_Tracker是Teensy 3.1(PJRC)项目,将导致低成本,易于复制的APRS跟踪器,该接口可以连接到几乎所有无线电设备。 可以在Elsmer页面上的Sarasota紧急广播俱乐部的网站上找到构建详细信息。...

    R语言在天文中的应用包介绍

    这些数据集覆盖了多个研究领域和方法,包括但不限于:密度估计、异方差测量误差、列联表分析、两样本假设检验、空间点过程、非线性回归、混合模型、截断和删失、多变量分析、分类和聚类、非均匀泊松过程以及周期性和...

    PFC计算颗粒级配源代码

    根据提供的文件信息,我们可以深入探讨PFC(Particle Flow Code)中的颗粒级配计算方法及其相关概念。 ### PFC概述 PFC是一款专为离散元方法(DEM)模拟设计的软件,广泛应用于岩土工程、地质力学等领域。通过模拟...

    FTC-DeNS:FreeTON竞赛-分散名称服务

    密度证书证书是DeNS树的节点和叶子。 它包含有关指向特定智能合约地址的信息,证书所有者可以检索和更新该地址。 证书也可以要求root代表所有者部署子证书(子域)。密度拍卖Vickrey拍卖系统用于根据根智能合约分配...

    tensorflow 中dataset.padded_batch函数的个人理解过程

    今天继续啃Tensorflow实战Google深度学习框架这本书,在250P的Seq2Seq模型代码理解时候有点困难,其中padded_batch(batch_size,padded_shapes)这个函数为最,本次仅为记录刨根问底的过程,也是...Like `Dataset.dens

    IndoNimex:通过Dens.TV的Animax和AniPlus流

    该存储库使用Dens.TV作为源 这是盗版吗 好的,此存储库仅从其网站嵌入 这是非法的吗? Dunno,只想创建它,这个脚本使用了他们的网站安全性,也许他们会尽快解决 贡献 随意创建问题或创建请求请求 像这个回购? ...

    基于ANSYS的中型轮式推土机推土铲大臂的有限元分析

    上述内容中提到了一些具体的技术参数,比如推土铲大臂的尺寸(如450mm、2020mm、1125mm、20mm、100mm、180mm等)、材料属性(如弹性模量EX为2.1e11,泊松比PRXY为0.26,密度DENS为7850 kg/m³等)、载荷条件和边界...

    鸟巢ANSYS建模命令流

    ### ANSYS鸟巢建模命令流解析 #### 一、概述 本文将详细介绍一份由ANSYS高手撰写...通过对这份命令流的学习和应用,可以更好地理解ANSYS软件在实际工程中的应用方法,同时也为后续的结构分析和优化提供了坚实的基础。

    基于主观方法计算混合层深度:此功能将有助于确定混合层深度-matlab开发

    % 用法:MLD=ra_mld(salt,temp,Z,dT) % % 先决条件:您必须已经安装了 SW Package 或者您必须有% 以下来自海水包的功能% sw_den.m ; sw_dens.m; sw_dens0.m; sw_seck.m; sw_smow.m % % 描述:此函数根据剖面数据确定...

    [UCGA] HP ServiceGuard配置手册.doc

    这些内容对于理解如何在HP-UX环境中部署和管理ServiceGuard集群以保证Oracle数据库高可用性具有重要的指导意义。通过ServiceGuard,可以在硬件故障或其他问题发生时,自动将服务从故障节点迁移到健康的节点,确保...

    ANSYS单元和整体刚度矩阵的提取.pdf

    "ANSYS单元和整体刚度矩阵的提取" ANSYS是一种有限元分析软件,广泛应用于结构、热传导、流体力学、电磁...该文件提供了 ANSYS 软件中的单元和整体刚度矩阵的提取方法,展示了 ANSYS 软件的强大功能和广泛应用前景。

    常用弹塑性材料模型借鉴.pdf

    该模型可以使用MP命令输入弹性模量(Exx)、泊松比(NUXY)和密度(DENS),并使用TB和TBDATA命令输入屈服强度和切线模量。例如,尼克尔合金的双线性各向同性模型可以使用以下命令实现: MP,ex,1,180e9 ! Pa MP,...

Global site tag (gtag.js) - Google Analytics