일별로 계약되어있는 업체 수를 구하려고 합니다. 0 2 408

by 빛나는관 [SQL Query] [2019.09.23 19:08:42]



안녕하세요.

가맹점별로 가맹 시작일(contract_start)과 가맹 종료일(contract_end)이 존재합니다.
해당 컬럼으로 일자별 가맹점 수를 구하려고 하는데, 방법을 잘 모르겠습니다..ㅠㅠ
(가맹 시작일 기준으로 업체 수를 구하는 것이 아닌, 매일 몇 개의 업체가 가맹 되어있는지 현황을 보려고 합니다..!)

도움 주시면 대단히 감사하겠습니다!

by jkson [2019.09.24 08:34:42]
with t as
(
select 'A' store, to_date('2019-01-01','yyyy-mm-dd') contract_start, to_date('2019-03-31','yyyy-mm-dd') contract_end from dual union all
select 'A' store, to_date('2019-04-01','yyyy-mm-dd') contract_start, to_date('2019-08-31','yyyy-mm-dd') contract_end from dual union all
select 'B' store, to_date('2019-02-01','yyyy-mm-dd') contract_start, to_date('2019-05-31','yyyy-mm-dd') contract_end from dual union all
select 'C' store, to_date('2019-03-01','yyyy-mm-dd') contract_start, to_date('2019-12-31','yyyy-mm-dd') contract_end from dual
)
select b.dt, count(1) cnt 
  from t a,
      (select to_date('2019-01-01','yyyy-mm-dd') + level - 1 dt from dual connect by level <=365) b
 where b.dt between a.contract_start(+) and contract_end(+)
 group by b.dt
 order by b.dt

 


by 마농 [2019.09.25 10:04:32]

전체 가맹된 일자를 다 보여줄 것인지?
특정 검색기간에 해당하는 일자만 보여줄 것인지?
검색 기간 일자 중 없는 일자도 0건으로 보여줄 것인지?

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입