오라클 count 쿼리 질문입니다. 0 3 2,088

by 모델장윤주 [2016.03.04 12:02:34]


현재 구하고자 하는 값은

TABLE A에 있는 데이터에서

전체 COUNT 중 ( 사용중인 ID와 미사용중인 ID ) 를 조회하기를 원합니다.

( 사용중인 ID와 미사용중인 ID는 다른 구분 컬럼이 있는게 아니라, 사용날짜를 비교하여 쿼리하고자 합니다. )

 

제가 구한 쿼리는

 

SELECT T.TOTAL_CNT - T.NO_USE_CNT AS USE_CNT, T.NO_USE_CNT, T.TOTAL_CNT

FROM ( SELECT ( SELECT COUNT(*) AS TOTAL_CNT FROM A WHERE ~~~) AS TOTAL_CNT, 

                     ( SELECT COUNT(*) FROM A WHERE TIME <= SYSDATE - 1 ~~~ ) AS NO_USE_CNT

FROM DUAL ) T

 

 

이런 형식으로 해서 구하긴 했습니다만...

( 전체 카운트, 사용중인 카운트, 미사용중인 카운트 )

효율성이라든지 그런건 문제가 없을까요 ?

혹은, 더 간단한 방법은 없을까요 ??? 

by jkson [2016.03.04 12:55:40]
select count(1) as total_cnt
      ,count(case when time <= sysdate - 1 then 1 else null end) no_use_cnt
      ~~~
  from a

a테이블을 한번만 읽으면서 조건에 따라 카운트 하세요.

 


by Dev03 [2016.03.06 11:17:18]

질문입니다~ else null 은 없어도 되지 않나요 ?


by swlee710 [2016.03.07 09:11:01]

네 없어도 괜찮습니다.

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