zdww1616 2021-06-18 15:48 采纳率: 0%
浏览 58

求连续日期大于或等于3天,并且工资大于100

with a as (select 1 id,  to_date('20200301', 'yyyyMMdd') rq , 101 sal
    from dual
  union all
  select 2 ,  to_date('20200302', 'yyyyMMdd') rq , 102 sal
    from dual
  union all
  select 3 ,  to_date('20200303', 'yyyyMMdd') rq , 103 sal
    from dual
  union all
  select 4 ,  to_date('20200305', 'yyyyMMdd') rq , 104 sal
    from dual
  union all
  select 5 ,  to_date('20200306', 'yyyyMMdd') rq , 12 sal
    from dual
  union all
  select 6 ,  to_date('20200309', 'yyyyMMdd') rq , 32 sal
    from dual
  union all
  select 7 ,  to_date('20200302', 'yyyyMMdd') rq , 21 sal
    from dual
  union all
  select 8 ,  to_date('20200303', 'yyyyMMdd') rq , 32 sal
    from dual
  union all
  select 9 ,  to_date('20200304', 'yyyyMMdd') rq , 12 sal
    from dual
  union all
  select 10 ,  to_date('20200305', 'yyyyMMdd') rq , 32 sal
    from dual
  union all
  select 11 ,  to_date('20200308', 'yyyyMMdd') rq , 241 sal
    from dual
  union all
  select 12 ,  to_date('20200309', 'yyyyMMdd') rq , 212 sal
    from dual
  union all
  select 13 ,  to_date('20200311', 'yyyyMMdd') rq , 312 sal
    from dual)
   

返回结果为

 

  • 写回答

1条回答 默认 最新

  • Wen先森 2022-12-27 10:37
    关注

    img

    
    SELECT
        ID,
        RQ,
        SAL 
    FROM
        (
        SELECT
            *,
            DATE_SUB( RQ, INTERVAL NUM DAY ) AS results 
        FROM
            ( SELECT ID, RQ, SAL, row_number ( ) over ( ORDER BY RQ ) NUM FROM sqly WHERE SAL > 100 ) AS d 
        ) AS e 
    WHERE
        results IN (
        SELECT
            results 
        FROM
            (
            SELECT
                *,
                COUNT( * ) AS con 
            FROM
                (
                SELECT
                    *,
                    DATE_SUB( RQ, INTERVAL NUM DAY ) AS results 
                FROM
                    ( SELECT ID, RQ, SAL, row_number ( ) over ( ORDER BY RQ ) NUM FROM sqly WHERE SAL > 100 ) AS a 
                ) AS b 
            GROUP BY
                results 
            ) AS c 
        WHERE
        con >= 3 
        )
    
    评论

报告相同问题?