- Notifications
You must be signed in to change notification settings - Fork 849
/
Copy pathanalytics-Ranking-part-3.sql
65 lines (42 loc) · 1.89 KB
/
analytics-Ranking-part-3.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
REM Script: Analytics - Ranking part 3
REM SQL from the KISS (Keep It Simply SQL) Analytic video series by Developer Advocate Connor McDonald. This script demonstrates the Tabibitosan method for grouping sets of data.
Run this script standalone, or take it as part of the complete Analytics class at https://tinyurl.com/devgym-classes
drop table LAB_SAMPLES;
drop sequence LAB_SAMPLES_SEQ;
create sequence LAB_SAMPLES_SEQ;
create table LAB_SAMPLES
( sample_id int default LAB_SAMPLES_SEQ.NEXTVAL,
date_taken date
);
insert into LAB_SAMPLES ( date_taken) values (date '2015-12-01');
insert into LAB_SAMPLES ( date_taken) values (date '2015-12-02');
insert into LAB_SAMPLES ( date_taken) values (date '2015-12-03');
insert into LAB_SAMPLES ( date_taken) values (date '2015-12-04');
insert into LAB_SAMPLES ( date_taken) values (date '2015-12-07');
insert into LAB_SAMPLES ( date_taken) values (date '2015-12-08');
insert into LAB_SAMPLES ( date_taken) values (date '2015-12-09');
insert into LAB_SAMPLES ( date_taken) values (date '2015-12-10');
insert into LAB_SAMPLES ( date_taken) values (date '2015-12-14');
insert into LAB_SAMPLES ( date_taken) values (date '2015-12-15');
insert into LAB_SAMPLES ( date_taken) values (date '2015-12-16');
insert into LAB_SAMPLES ( date_taken) values (date '2015-12-19');
insert into LAB_SAMPLES ( date_taken) values (date '2015-12-20');
select * from LAB_SAMPLES order by 2;
select date_taken,
row_number() over(order by date_taken) as rn
from LAB_SAMPLES
order by 1;
select date_taken,
date_taken-row_number() over(order by date_taken) as delta
from LAB_SAMPLES
order by 1;
select min(date_taken) date_from,
max(date_taken) date_to,
count(*) num_samples
from (
select date_taken,
date_taken-row_number() over(order by date_taken) as delta
from LAB_SAMPLES
)
group by delta
order by 1;