Oracle Partition By从多个组中获取数据

时间:2015-02-05 09:08:34

标签: oracle group-by window-functions rank

我有一个表格,数据如下所示

ID  Timestamp   Value  
1   2/2/2015 12:05  1  
2   2/2/2015 12:05  2  
3   2/2/2015 12:05  2  
1   2/2/2015 12:10  1  
2   2/2/2015 12:10  2  
3   2/2/2015 12:10  2  
1   2/2/2015 12:15  null  
2   2/2/2015 12:15  3  
3   2/2/2015 12:15  2  
1   2/2/2015 12:20  null
2   2/2/2015 12:20  1
3   2/2/2015 12:20  3
1   2/2/2015 12:25  null
2   2/2/2015 12:25  10
3   2/2/2015 12:25  9
1   2/2/2015 12:30  1
2   2/2/2015 12:30  2
3   2/2/2015 12:30  1
1   2/2/2015 12:35  null
2   2/2/2015 12:35  2
3   2/2/2015 12:35  1
1   2/2/2015 12:40  null
2   2/2/2015 12:40  2
3   2/2/2015 12:40  2

我希望在null的基础上对值进行分组,并过滤​​出null在连续时间块中出现的最小和最大时间。以下是所需的输出。我尝试过使用partition by子句但没有得到想要的结果

1   2/2/2015 12:15  2/2/2015 12:25  null
1   2/2/2015 12:35  2/2/2015 12:40  null

1 个答案:

答案 0 :(得分:0)

你可以试试这个;

这需要一分钟

SELECT 
 EXTRACT(MINUTE FROM TO_TIMESTAMP('03/12/14 11:15:00','DD/MM/YY HH24:MI:SS')) 
FROM DUAL

可能你的剧本会是;


SELECT id,
       min(EXTRACT(MINUTE FROM TO_TIMESTAMP(your_timestamp_cloumn))),
       value
  from table_name
 where value is null
 group by id,value
UNION
SELECT id,
       max(EXTRACT(MINUTE FROM TO_TIMESTAMP(your_timestamp_cloumn))),
       value
  from table_name
 where value is null
  group by id,value

编辑:

如果您的'时间戳' coulmn的格式是您可以尝试此脚本的时间戳;


SELECT id,
       min(to_char(your_timestamp_cloumn,'MI')),
       value
  from onur_deneme
 where value is null
 group by id,value
UNION
SELECT id,
       max(to_char(your_timestamp_cloumn,'MI')),
       value
  from onur_deneme
 where value is null
  group by id,value