select查询问题
时间:2011-12-06
来源:互联网
例子:
表a有3个字段,name,time,type
name time type
1-1234 2011-12-6 10:57:02 1
1-1234 2011-12-6 13:57:02 1
1-1234 2011-12-6 13:57:04 1
1-1234 2011-12-6 13:59:00 2
1-1234 2011-12-6 14:30:00 1
1-2222 2011-12-6 14:32:00 1
1-2222 2011-12-6 14:35:00 4
...
要查询表全部数据,如果是name和type都相同,且time间隔小于5分钟的情况下只取一条(随便或者time的最大那条);
查询结果
name time type
1-1234 2011-12-6 10:57:02 1
1-1234 2011-12-6 13:57:04 1
1-1234 2011-12-6 13:59:00 2
1-1234 2011-12-6 14:30:00 1
1-2222 2011-12-6 14:32:00 1
1-2222 2011-12-6 14:35:00 4
...
表a有3个字段,name,time,type
name time type
1-1234 2011-12-6 10:57:02 1
1-1234 2011-12-6 13:57:02 1
1-1234 2011-12-6 13:57:04 1
1-1234 2011-12-6 13:59:00 2
1-1234 2011-12-6 14:30:00 1
1-2222 2011-12-6 14:32:00 1
1-2222 2011-12-6 14:35:00 4
...
要查询表全部数据,如果是name和type都相同,且time间隔小于5分钟的情况下只取一条(随便或者time的最大那条);
查询结果
name time type
1-1234 2011-12-6 10:57:02 1
1-1234 2011-12-6 13:57:04 1
1-1234 2011-12-6 13:59:00 2
1-1234 2011-12-6 14:30:00 1
1-2222 2011-12-6 14:32:00 1
1-2222 2011-12-6 14:35:00 4
...
作者: chengccy2010 发布时间: 2011-12-06
1-1234 2011-12-6 10:57:02 1
1-1234 2011-12-6 10:57:06 1
1-1234 2011-12-6 10:57:10 1
如果最大
是
1-1234 2011-12-6 10:57:10 1
随意的话
是
1-1234 2011-12-6 10:57:10或者1-1234 2011-12-6 10:57:10 1,1-1234 2011-12-6 10:57:02 1
1-1234 2011-12-6 10:57:06 1
1-1234 2011-12-6 10:57:10 1
如果最大
是
1-1234 2011-12-6 10:57:10 1
随意的话
是
1-1234 2011-12-6 10:57:10或者1-1234 2011-12-6 10:57:10 1,1-1234 2011-12-6 10:57:02 1
作者: xpingping 发布时间: 2011-12-06
引用 1 楼 xpingping 的回复:
1-1234 2011-12-6 10:57:02 1
1-1234 2011-12-6 10:57:06 1
1-1234 2011-12-6 10:57:10 1
如果最大
是
1-1234 2011-12-6 10:57:10 1
随意的话
是
1-1234 2011-12-6 10:57:10或者1-1234 2011-12-6 10:57:10 1,1-1234 2011……
1-1234 2011-12-6 10:57:02 1
1-1234 2011-12-6 10:57:06 1
1-1234 2011-12-6 10:57:10 1
如果最大
是
1-1234 2011-12-6 10:57:10 1
随意的话
是
1-1234 2011-12-6 10:57:10或者1-1234 2011-12-6 10:57:10 1,1-1234 2011……
大哥没必要纠结这个吧,这个不是问题的重点啊。
作者: chengccy2010 发布时间: 2011-12-06
SQL code
SQL> WITH t AS ( 2 SELECT '1-1234' t_name,TO_DATE('2011-12-6 10:57:02','yyyy-mm-dd hh24:mi:ss') t_time,1 t_type FROM DUAL UNION ALL 3 SELECT '1-1234' t_name,TO_DATE('2011-12-6 13:57:02','yyyy-mm-dd hh24:mi:ss') t_time,1 t_type FROM DUAL UNION ALL 4 SELECT '1-1234' t_name,TO_DATE('2011-12-6 13:57:04','yyyy-mm-dd hh24:mi:ss') t_time,1 t_type FROM DUAL UNION ALL 5 SELECT '1-1234' t_name,TO_DATE('2011-12-6 13:59:00','yyyy-mm-dd hh24:mi:ss') t_time,2 t_type FROM DUAL UNION ALL 6 SELECT '1-1234' t_name,TO_DATE('2011-12-6 14:30:00','yyyy-mm-dd hh24:mi:ss') t_time,1 t_type FROM DUAL UNION ALL 7 SELECT '1-2222' t_name,TO_DATE('2011-12-6 14:32:00','yyyy-mm-dd hh24:mi:ss') t_time,1 t_type FROM DUAL UNION ALL 8 SELECT '1-2222' t_name,TO_DATE('2011-12-6 14:35:00','yyyy-mm-dd hh24:mi:ss') t_time,4 t_type FROM DUAL 9 ) 10 SELECT m.t_name, 11 TO_CHAR(m.t_time,'yyyy-mm-dd hh24:mi:ss') t_time, 12 m.t_type 13 FROM ( 14 SELECT t.*, 15 COUNT(*) OVER(PARTITION BY t.t_name, t_type ORDER BY t.t_time RANGE BETWEEN CURRENT ROW AND INTERVAL '5' minute following) cn 16 FROM t 17 ) m 18 WHERE m.cn = 1 19 ; T_NAME T_TIME T_TYPE ------ ------------------- ---------- 1-1234 2011-12-06 10:57:02 1 1-1234 2011-12-06 13:57:04 1 1-1234 2011-12-06 14:30:00 1 1-1234 2011-12-06 13:59:00 2 1-2222 2011-12-06 14:32:00 1 1-2222 2011-12-06 14:35:00 4 6 rows selected
作者: hudingchen 发布时间: 2011-12-06
引用 3 楼 hudingchen 的回复:
SQL code
SQL> WITH t AS (
2 SELECT '1-1234' t_name,TO_DATE('2011-12-6 10:57:02','yyyy-mm-dd hh24:mi:ss') t_time,1 t_type FROM DUAL UNION ALL
3 SELECT '1-1234' t_name,TO_DATE('2011-1……
SQL code
SQL> WITH t AS (
2 SELECT '1-1234' t_name,TO_DATE('2011-12-6 10:57:02','yyyy-mm-dd hh24:mi:ss') t_time,1 t_type FROM DUAL UNION ALL
3 SELECT '1-1234' t_name,TO_DATE('2011-1……
我以前还用过这个开窗函数,怎么就没想到了..
不过这个表的数据是百万级的,用开窗函数比较慢,有没有更好的方法吗?
作者: chengccy2010 发布时间: 2011-12-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28