博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle数据库分组查询
阅读量:5817 次
发布时间:2019-06-18

本文共 910 字,大约阅读时间需要 3 分钟。

  hot3.png

    有一个数据库表 summary :

名称 类型
ID VARCHAR2(64)
SUMMARY NVARCHAR2(200)
CREATE_DATE TIMESTAMP(6)
DEL_FLAG CHAR(1)
USER_ID VARCHAR2(64)

     有这样几条数据:

ID SUMMARY CREATE_DATE DEL_FLAG USER_ID
1 test1 01-4月 -18 09.49.11.080000000 上午 0 1001
2 test2 06-4月 -18 09.40.28.798000000 上午 0 1002
3 test3 06-4月 -18 09.40.28.798000000 上午 0 1001
4 test4 01-4月 -18 09.49.11.080000000 上午 0 1003

    要求:返回每个用户最新的 summary_info 信息(同一个 user_id 视为同一用户 ),比如本次查询应该返回 id = 2,id = 3,id= 4 的记录。

select 	c.user_id,c.id,c.summary from (select     a.id,a.user_id,a.summary,	ROW_NUMBER() over (partition by user_id order by create_date desc) rn from 	summary_info awhere del_flag = '0') c where c.rn = '1' group by user_id,id,summary

    首先看括号里的 ROW_NUMBER() OVER() 语句,意思是先按照 user_id 分组,然后 create_date 降序排列,最后返回排好序的结果集。(因为数据有过更改,实际结果和上面的表格数据稍有不同。)

    然后就是对这个表 group by 查询并将 rn = 1 的记录返回。

    上面的记录中 id = 2 是最新的,所以应该返回的是前两行记录:

转载于:https://my.oschina.net/patch/blog/1794208

你可能感兴趣的文章
wifi强度数据采集器(android)
查看>>
OpenStack实践系列⑥构建虚拟机实例
查看>>
poj2774
查看>>
centos7安装sonarqube6.7 代码质量管理平台
查看>>
HDU2201 熊猫阿波的故事【概率】
查看>>
UVALive5661 UVA668 ZOJ2037 Parliament
查看>>
BZOJ1879:[SDOI2009]Bill的挑战(状压DP)
查看>>
.Net框架中,.ashx页面访问session
查看>>
通用Mapper新特性:ExampleBuilder 2017年12月18日
查看>>
智能ERP 交接班统计异常的解决方法
查看>>
[mysql]设置Ubuntu上的MySQL可以远程访问
查看>>
while与for的形式变化
查看>>
arc如何破循环或交叉引用
查看>>
wx.setStorageSync(KEY,DATA)
查看>>
Debian系列Linux/Ubuntu 安装软件
查看>>
Java常见基础问题
查看>>
Java Web整合开发(5) - Session
查看>>
30. 初始化数据库环境
查看>>
Python之print详解
查看>>
Docker的学习--命令使用详解
查看>>