쿼리문 질문이 있습니다 0 6 1,101

by 치비 [2015.11.10 13:49:52]


'결과' 라는 열 값에 1은 '합격', 0는 '불합격' 이라는 데이터를 저장 하는데

select count(결과) 총원 from 테이블;

요렇게 하면 평가가 되지않은 null 값을 제외한 나머지 불합격 과 합격 데이터가 카운트가된 결과가

'총원' 열값에 치환되어서 나타납니다.

그럼 여기서 합격률 이나 불합격 률을 구할려구 하는데

합격인원을 count 할때는 밑에 보시는 쿼리문과 같이

select count(결과) from 테이블 where 결과 = 1; 이렇게 하면 합격인원 수가 count 되고

불합격 인원수는 select count(결과) from 테이블 where 결과 = 0; 입니다.

저생각엔 합격률을 구하려면 위의 "count(결과)" 값에 "count(결과) where 결과 = 1" 을 나눠야 하는데

select 문이 2개이다 보니 이걸 조합을 해야하는데 어떡해 해야할지 감이 안오네여 ㅠ

혹시 간단한 힌트라도 주시면 대단히 감사드리겠습니다. 긴긁 읽어주시느라 대단히 감사드립니다 행복하세요^^

by 부쉬맨 [2015.11.10 13:51:58]

select 결과,count(*)

from 테이블

group by 결과


by 치비 [2015.11.10 14:05:20]

좋은 정보 감사드립니다^^


by 창조의날개 [2015.11.10 13:54:24]

select SUM(DECODE(결과, 1, 1, 0)) 합격자수
     , SUM(DECODE(결과, 0, 1, 0)) 불합격자수
     , ROUND(SUM(DECODE(결과, 1, 1, 0)) / COUNT(*) * 100) 합격률
from 테이블;

 


by 치비 [2015.11.10 14:04:49]

헉... 빠른 답변 대단히 감사드립니다

sum 값을 decode 해야 하는것 을 못알아 차렸습니다. 

저는 단순히 decode(결과 , 1, '합격') 이걸 조합 하려다 보니 같은 열값이 select 되므로

계속 오류 가 났었는데 알고보니 sum(decode ~~)가 되는 거였군요

decode(sum(결과) ~~) 이건 되는데 두개 순서 바꾸는걸 생각 못하다니 ㅎㅎ

도움을 주셔서 대단히 감사드립니다. 아참 count(*) 대신에 count(컬럼) 명으로 수정 하니까

올바르게 합격률이 나오더군요^^

 


by 창조의날개 [2015.11.10 15:46:37]

결과가 NULL인 경우도 있군요..

위에 글을 자세히 못봤네요..

이번답글도 2% 부족하군요. ㅠ.ㅠ


by 마농 [2015.11.10 14:07:21]

SUM(DECODE( 해도 되지만...

단순하게 SUM(결과) 만 해도 합격자수 나옵니다.

결과 값의 특성을 이용하는 거죠.

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