select d.user_id,d.start_time, d.score ,d.win_coins from (
select user_id ,to_char(start_time,'yyyymmdd')as start_time,score,win_coins
, ROW_NUMBER() over (partition by user_id,to_char(start_time,'yyyymmdd') order by to_date(to_char(start_time,'yyyymmdd'),'yyyymmdd')asc,score asc) as rn
from drivereport where to_char(start_time,'yyyy-mm-dd') between '2015-05-01' and '2015-05-11'
) d where rn=1) t2,
( SELECT distinct(c.user_id) as user_id FROM
(SELECT B.user_id, (MAX (to_char(B.start_time,'yyyymmdd')) - MIN (to_char(B.start_time,'yyyymmdd'))+1) as DAYS
FROM (SELECT A.*, TO_NUMBER(to_char(A.start_time,'yyyymmdd') - ROWNUM)as DAYS
FROM (
SELECT user_id, to_date(to_char(start_time,'yyyymmdd'),'yyyymmdd') as start_time ,min(score)as MI
FROM drivereport where to_char(start_time,'yyyymmdd') >='20150501' and to_char(start_time,'yyyymmdd') <= '20150511'
GROUP BY user_id, to_char(start_time,'yyyymmdd') ORDER BY user_id, to_char(start_time,'yyyymmdd')
) A ) B
GROUP BY B.user_id, B.DAYS) C
WHERE C.DAYS > 2 order by c.user_id asc) t3
where t3.user_id = t2.user_id
======================================
-- 获得至少连续3天开启驾驶记录 例如 用户1:1号~3号的记录,用户2:2号~4号的记录,用户3: 4号~6号的记录 ;用户4:7号~10号的记录
-- 下面的SQL主要获得至少连续3天的有哪些用户的ID
SELECT distinct(c.user_id) AS user_id
FROM (SELECT b.user_id
,(MAX(to_char(b.start_time, 'yyyymmdd')) -
MIN(to_char(b.start_time, 'yyyymmdd')) + 1) AS days
FROM (SELECT a.user_id
,a.start_time
,to_number(to_char(a.start_time, 'yyyymmdd') -
rownum) AS days
FROM (SELECT user_id
,to_date(to_char(start_time, 'yyyymmdd'), 'yyyymmdd') AS start_time
FROM drivereport
WHERE to_char(start_time, 'yyyy-mm-dd') >=
'2015-05-01'
AND to_char(start_time, 'yyyy-mm-dd') <=
'2015-05-11'
GROUP BY user_id
,to_char(start_time, 'yyyymmdd')
ORDER BY user_id
,to_char(start_time, 'yyyymmdd')) a) b
GROUP BY b.user_id
,b.days) c
WHERE c.days > 2
ORDER BY c.user_id ASC