oracle 連續日期統計____oracle

來源:互聯網
上載者:User
select t2.user_id,t2.start_time, t2.score ,t2.win_coins from (

 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.