资讯专栏INFORMATION COLUMN

Oracle分组查询

developerworks / 1613人阅读

摘要:分组查询,且只取每一组内的一条最新的记录需求查询为,,且在有效时间段内的每个最新的一条记录不是主键其中下面代码含义是将时间在有效时间段内且为,或,或的所有记录根据分组,且组内的顺序是根据时间的逆序排列上面执行结果是类似下面表格

分组查询,且只取每一组内的一条最新的记录
需求:查询 code 为a,b,c且在有效时间段内的每个code最新的一条记录(code不是主键)
select * from (select code
    col1,
    col2,
    row_number() over (partition by code order by time desc) rank
    from t_order
    where type= "107"
    and to_char(sysdate, "yyyymmdd-hh24:mi:ss") <= validuntilTime
        and code in
    ("a","b","c")
    ) where rank = 1

其中下面代码含义是将时间在有效时间段内(to_char(sysdate, "yyyymmdd-hh24:mi:ss") <= validuntilTime)且code为a,或b,或c(code in("a","b","c"))的所有记录根据code分组(partition by code),且组内的顺序是根据时间的逆序排列(order by time desc

(select code
    col1,
    col2,
    row_number() over (partition by code order by time desc) rank
    from t_order
    where type= "107"
    and to_char(sysdate, "yyyymmdd-hh24:mi:ss") <= validuntilTime
        and code in
    ("a","b","c")
    ) 

上面执行结果是类似下面表格效果

CODE COL1 COL2 RANK
a xxx xxx 1
a xxx xxx 2
a xxx xxx 3
b xxx xxx 1
b xxx xxx 2
c xxx xxx 1
c xxx xxx 2
c xxx xxx 3
c xxx xxx 4

然后将其作为子查询,在外层套一个select * from (上面的代码) where rank = 1就能将每一组内的一条最新的记录查询出来了

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/35363.html

相关文章

  • Oracle总结【SQL细节、多表查询分组查询、分页】

    摘要:前言在之前已经大概了解过数据库和学过相关的知识点,但是太久没用过了,就基本忘了印象中就只有基本的语句和相关一些概念写下本博文的原因就是记载着一些以前没注意到的知识点以后或许会有用实例与数据库概念数据库服务器由两部分组成实例理解为对象看不见的 前言 在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了...印象中就只有基本的SQL语...

    陈伟 评论0 收藏0
  • Oracle ROW_NUMBER() OVER()函数的实际场景使用

    摘要:前言最近开发的系统中有个在线咨询功能。学生在前台提交咨询信息,教师可以登录后台回复咨询。将上面作为子查询,使用内连接并用字段连接。在中还可以使用来返回唯一值。函数,语法如下函数用于给记录进行标号,函数的作用是将表中的记录进行分组和排序。 前言 最近开发的系统中有个在线咨询功能。学生在前台提交咨询信息,教师可以登录后台回复咨询。该功能设计是直接使用一张表,使用是否开始标识该条记录是否是咨...

    jsyzchen 评论0 收藏0
  • Apache Superset使用分享

    摘要:请原谅我以下所有截图中都是使用的中文,有些地方翻译略显生硬。本来系统是使用的英文,奈何领导要求中文呀。时间字段的表示时间属性必须勾选上一般会时间列默认勾选。可根据来排查问题所在,并且系统为用户提供版的查询工具来操作数据库。Superset简介 Superset是一个受Apache软件基金会支持的处于孵化阶段的企业级数据可视化web项目。具有以下特点: 内含丰富的数据图表样式 支持多种数据源...

    mdluo 评论0 收藏0
  • Oracle按年、月、日、周等统计数据

    摘要:在很多项目中都会有数据统计的功能,如按照年月周日统计某个用户提交的数量或者直接统计指定年月周或者日新增的数量。按年统计这里就是将创建时间格式化为年形式,按照单位分组,查询出提交的数量。按自然周统计这里的是获取该日期的在年中的第几周。 在很多项目中都会有数据统计的功能,如按照年、月、周、日统计某个用户提交的数量;或者直接统计指定年、月、周或者日新增的数量。最近我接触的一个项目,客户就要求...

    zhouzhou 评论0 收藏0
  • 1 小时 SQL 极速入门(三)——分析函数

    摘要:小时极速入门前面两篇我们从的最基础语法讲起,到表联结多表查询。大家可以点击链接查看小时极速入门一小时极速入门二今天我们讲一些在做报表和复杂计算时非常实用的分析函数。就会得到每个分组内的按照订单数量排序的行号。 1 小时 SQL 极速入门 前面两篇我们从 SQL 的最基础语法讲起,到表联结多表查询。大家可以点击链接查看1 小时 SQL 极速入门(一)1 小时 SQL 极速入门(二)今天我...

    xioqua 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<