首页 > 数据库技术 > 详细

Oracle分析函数

时间:2014-03-22 01:27:49      阅读:370      评论:0      收藏:0      [点我收藏+]

最近在工作中遇到一个SQL问题,就是需要在GROUP BY之后,取第一条记录,而不是MAX,MIN,这么简单的筛选。

感谢我的同事lhqmccn,帮我解决这个问题。

我们都知道,MAX,MIN,COUNT,SUM等属于聚合函数,其实Oracle还提供另外一种函数,分析函数

下面是例子:按CLASS分组后,取VALUE最大的记录所对应的NAME。

主要是这句:MAX(NAME) KEEP(DENSE_RANK FIRST ORDER BY VALUE DESC)

bubuko.com,布布扣
WITH t AS
(SELECT 1 CLASS, 2 VALUE, a NAME
    FROM dual
  UNION ALL
  SELECT 1 CLASS, 1 VALUE, b NAME
    FROM dual
  UNION ALL
  SELECT 1 CLASS, 3 VALUE, c NAME
    FROM dual
  UNION ALL
  SELECT 2 CLASS, 1 VALUE, d NAME
    FROM dual
  UNION ALL
  SELECT 2 CLASS, 2 VALUE, e NAME
    FROM dual
  UNION ALL
  SELECT 2 CLASS, 3 VALUE, f NAME FROM dual)
SELECT CLASS,MAX(VALUE),MAX(NAME) KEEP(DENSE_RANK FIRST ORDER BY VALUE DESC)
  FROM t
GROUP BY CLASS;
bubuko.com,布布扣

分析函数种类众多,而且功能强大,我只是应用了满足我这个需求的一种,请大家自行Google学习。

 

P.S. 除了Oracle外,SQL Server和Postgresql也支持分析函数。

Oracle分析函数,布布扣,bubuko.com

Oracle分析函数

原文:http://www.cnblogs.com/eshizhan/p/3616805.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!