Oracle:重复组中的最小值最大值

吉里斯·斯瓦米(Girish Swamy)

我有一张桌子,如下。

DATE_WORKED COUNTRY
1-Nov-13    United Kingdom
4-Nov-13    United Kingdom
5-Nov-13    India
6-Nov-13    India
7-Nov-13    India
8-Nov-13    United Kingdom
11-Nov-13   United Kingdom
12-Nov-13   India
13-Nov-13   India
14-Nov-13   India
15-Nov-13   United Kingdom
18-Nov-13   United Kingdom
19-Nov-13   India
20-Nov-13   India
21-Nov-13   India
22-Nov-13   United Kingdom
25-Nov-13   United Kingdom
26-Nov-13   India
27-Nov-13   India
28-Nov-13   India
29-Nov-13   United Kingdom

我正在寻找一个国家每次住宿的开始日期和结束日期。

COUNTRY      START_DATE END_Date
United Kingdom      1-Nov-13    4-Nov-13
India               5-Nov-13    7-Nov-13
United Kingdom      8-Nov-13    11-Nov-13
India               12-Nov-13   14-Nov-13
United Kingdom      15-Nov-13   18-Nov-13
India               19-Nov-13   21-Nov-13
United Kingdom      22-Nov-13   25-Nov-13
India               26-Nov-13   28-Nov-13
United Kingdom      29-Nov-13   

请通过SQL查询帮助我实现这一目标。提前致谢。

罗布·范·维克(Rob van Wijk)

使用Tabibitosan

SQL> create table mytable (date_worked,country)
  2  as
  3  select to_date('1-Nov-13','dd-Mon-yy'), 'United Kingdom' from dual union all
  4  select to_date('4-Nov-13','dd-Mon-yy'), 'United Kingdom' from dual union all
  5  select to_date('5-Nov-13','dd-Mon-yy'), 'India' from dual union all
  6  select to_date('6-Nov-13','dd-Mon-yy'), 'India' from dual union all
  7  select to_date('7-Nov-13','dd-Mon-yy'), 'India' from dual union all
  8  select to_date('8-Nov-13','dd-Mon-yy'), 'United Kingdom' from dual union all
  9  select to_date('11-Nov-13','dd-Mon-yy'), 'United Kingdom' from dual union all
 10  select to_date('12-Nov-13','dd-Mon-yy'), 'India' from dual union all
 11  select to_date('13-Nov-13','dd-Mon-yy'), 'India' from dual union all
 12  select to_date('14-Nov-13','dd-Mon-yy'), 'India' from dual union all
 13  select to_date('15-Nov-13','dd-Mon-yy'), 'United Kingdom' from dual union all
 14  select to_date('18-Nov-13','dd-Mon-yy'), 'United Kingdom' from dual union all
 15  select to_date('19-Nov-13','dd-Mon-yy'), 'India' from dual union all
 16  select to_date('20-Nov-13','dd-Mon-yy'), 'India' from dual union all
 17  select to_date('21-Nov-13','dd-Mon-yy'), 'India' from dual union all
 18  select to_date('22-Nov-13','dd-Mon-yy'), 'United Kingdom' from dual union all
 19  select to_date('25-Nov-13','dd-Mon-yy'), 'United Kingdom' from dual union all
 20  select to_date('26-Nov-13','dd-Mon-yy'), 'India' from dual union all
 21  select to_date('27-Nov-13','dd-Mon-yy'), 'India' from dual union all
 22  select to_date('28-Nov-13','dd-Mon-yy'), 'India' from dual union all
 23  select to_date('29-Nov-13','dd-Mon-yy'), 'United Kingdom' from dual
 24  /

Table created.

SQL> with tabibitosan as
  2  ( select row_number() over (order by date_worked)
  3           - row_number() over (partition by country order by date_worked) grp
  4         , date_worked
  5         , country
  6      from mytable
  7  )
  8  select country
  9       , min(date_worked) start_date
 10       , max(date_worked) end_date
 11    from tabibitosan
 12   group by country
 13       , grp
 14   order by start_date
 15  /

COUNTRY        START_DATE          END_DATE
-------------- ------------------- -------------------
United Kingdom 01-11-2013 00:00:00 04-11-2013 00:00:00
India          05-11-2013 00:00:00 07-11-2013 00:00:00
United Kingdom 08-11-2013 00:00:00 11-11-2013 00:00:00
India          12-11-2013 00:00:00 14-11-2013 00:00:00
United Kingdom 15-11-2013 00:00:00 18-11-2013 00:00:00
India          19-11-2013 00:00:00 21-11-2013 00:00:00
United Kingdom 22-11-2013 00:00:00 25-11-2013 00:00:00
India          26-11-2013 00:00:00 28-11-2013 00:00:00
United Kingdom 29-11-2013 00:00:00 29-11-2013 00:00:00

9 rows selected.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Oracle:重复组中的最小值最大值

来自分类Dev

计算MySQL8中重复条目组的最大值和最小值之和

来自分类Dev

如何在SQL Server中计算序列中组的最小值和最大值?

来自分类Dev

获取一组字符串中的最大值和最小值

来自分类Dev

如何在 SQL 中获取一组行的最小值和最大值?

来自分类Dev

在所有行中重复的列的最小值和最大值

来自分类Dev

在所有行中重复的列的最小值和最大值

来自分类Dev

在Python中查找列表的最小值,最大值

来自分类Dev

获取Clojure中的最大值和最小值

来自分类Dev

数组中的Java最小值和最大值

来自分类Dev

在列表中交换最大值和最小值

来自分类Dev

列表集合中的最小值和最大值

来自分类Dev

在.json中查找最大值和最小值

来自分类Dev

CUDA中的整数最小值/最大值

来自分类Dev

F#中类型的最大值/最小值

来自分类Dev

元组列表中的最小值和最大值

来自分类Dev

在列表中获取最小值和最大值

来自分类Dev

获取Clojure中的最大值和最小值

来自分类Dev

在.json中查找最大值和最小值

来自分类Dev

F#中类型的最大值/最小值

来自分类Dev

JavaScript中数组的最小值和最大值

来自分类Dev

数组中的最大值和最小值

来自分类Dev

列表集合中的最小值和最大值

来自分类Dev

系列中的最小值和最大值

来自分类Dev

用数组中的最小值替换最大值

来自分类Dev

Pandas 中的 Rowwise 最大值/最小值

来自分类Dev

最小值和最大值

来自分类Dev

数组的最小值/最大值

来自分类Dev

从数组中查找最小值和最大值,最小值始终为0