Oracle分组取第一条数据

看看以前的私密日志,原来自己之前被很多小而简单的问题困惑过!

看着那时候我们还是新手中的新手做的备忘笔记!

其实就是用了Oracle的统计函数而已!

以前的日记(看样子应该是以前公司的源码,呵呵……)如下:勿喷!

对多数据进行分组排序后取每组第一条记录:

SELECT *
  FROM (
       SELECT ROW_NUMBER() OVER(
       PARTITION BY  ZA40011_3.URIAGE_DENPYO_NO,ZA40011_3.URIAGE_DENPYO_ROW_NO
       ORDER BY  ZA40011_3.KAKUTEI_SURYO_CS,
                  ZA40011_3.KAKUTEI_SURYO_BL,
                  ZA40011_3.KAKUTEI_SURYO_BT,
                  ZA40011_3.SYUKKA_SHIJI_NO,
                  ZA40011_3.SYUKKA_SHIJI_ROW_NO  DESC) LEV,
                ZA40011_3 .*
       FROM  WT_001_ZA40011_22070_2 ZA40011_2,
             WT_001_ZA40011_22070_3 ZA40011_3,
             JT_GYOMU_URIAGE_DETAIL URIAGE_DETAIL
       WHERE
       ZA40011_2.KAISYA_CODE = URIAGE_DETAIL.KAISYA_CODE
           AND ZA40011_2.URIAGE_DENPYO_NO = URIAGE_DETAIL.URIAGE_DENPYO_NO
           AND ZA40011_2.URIAGE_DENPYO_ROW_NO = URIAGE_DETAIL.ROW_NO
           AND URIAGE_DETAIL.KAISYA_CODE = ZA40011_3.KAISYA_CODE
           AND URIAGE_DETAIL.URIAGE_DENPYO_NO = ZA40011_3.URIAGE_DENPYO_NO
           AND URIAGE_DETAIL.ROW_NO = ZA40011_3.URIAGE_DENPYO_ROW_NO
           AND ZA40011_3.KEPPIN_RIYU_CODE IS NOT NULL
        )
 WHERE LEV = 1
-- ORDER BY KAKUTEI_SURYO_CS DESC

Oracle分组取第一条数据

时间: 2024-08-11 17:34:28

Oracle分组取第一条数据的相关文章

sql分组取第一条数据

sq分组取第一条数据的一个方法: select * from ( select row_number() over(partition by ID order by ID) as rownum , * from table ) as temp where temp.rownum = 1

MongoDB 聚合分组取第一条的案例及实现

关键字:MongoDB: aggregate:forEach 今天开发同学向我们提了一个紧急的需求,从集合mt_resources_access_log中,根据字段refererDomain分组,取分组中最近一笔插入的数据,然后将这些符合条件的数据导入到集合mt_resources_access_log_new中. 接到这个需求,还是有些心虚的,原因有二,一是,业务需要,时间紧:二是,实现这个功能MongoDB聚合感觉有些复杂,聚合要走好多步. 数据记录格式如下: 记录1 { "_id"

sql取第一条数据

在SQL Server数据库中,使用top关键字:        SELECT TOP number|percent column_name(s) FROM table_name        在MySQL数据库中,使用LIMIT关键字:        SELECT column_name(s) FROM table_name LIMIT number        例子:SELECT * FROM Persons LIMIT 1 在Oracle数据库中,使用ROWNUM关键字: SELECT

oracle分组后取每组第一条数据

数据格式: 分组取第一条的效果: sql语句: SELECT * FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER BY y DESC)rn, test1.* FROM test1) WHERE rn = 1 ;

shell第一列相同即判断为重复,只取其中一条数据

例如 123456.txt内容如下 90115601,2137786735     36684 90115601,2137786735     36684 90118301,17751822       34898 90145133,2050186877     3847 90145133,2050186877     3847 90151825,3580430507     37974 90151825,3580430507     37974 90188754,2987861307    

Oracle 查询出来的数据取第一条

Oracle 查询出来的数据取第一条 --------------------------------------------------------------------------- 转载自:http://www.itpub.net/thread-246442-1-1.html select * from (select * from <table> order by <key>) where rownum=1; select * from (select * from &l

Oracle的trunc和dbms_random.value随机取n条数据

今天在review项目代码的时候看到这样一个问题,有一张号码表,每次需要从这样表中随机取6个空闲的号码,也就是每次取出来的6个号码应该都会有所不同.然后我就看到了这样的SQL select   t.*     from   tel_number_tbl t    where   t.status = '空闲'      and   t.area_code = '0571'      and   t.delete_flg = '未删除'      and   rownum <= 6order by

SQL 分组(分区)排序获取第一条数据 ROW_NUMBER() OVER() PARTITION BY的使用

将最近用到的一些sql 记录下来 首先来看下应用场景: 有一张价格 "订单价格设置" 表如下: 商品编号,价格设置时间id(类似于创建时间,创建时间约早,则act_id越小) ,价格的时间段,商品价格 现在要求选出每个商品价格最大,价格设置时间id最大的那条记录,要求先考虑价格,再考虑设置时间 理想的结果:取出的是第3条记录 和第5条记录 思路:将数据根据item分区,再在每个分区中进行排序,先根据价格排序,再根据设置时间id排序,最后取出每个分组的第一条记录 实现: 利用 ROW_N

Oracle查询前几条数据的方法

在Oracle中实现select top N:由于Oracle不支持select top 语句,所以在Oracle中经常是用order by 跟rownum的组合来实现select top n的查询.简单地说,实现方法如下所示:select 列名1 ...列名n from(select 列名1 ...列名n    from 表名 order by 列名1)where rownum <=N(抽出记录数)order by rownum asc 如:select id,name from (selec