성별에 따른 월평균 조건 0 7 1,759

by Lonnie 성별 근로자 근무월 [2016.06.30 15:34:49]


>> 추가 사항입니다.

질의를 재정의 하도록 하겠습니다.

 

1. 성별은 남자와 여자로 구분

2. 근로자 수는 남자와 여자의 합이며, 이는 연간 근로자 수의 총계

2-1. 단순 남자와 여자의 합은 2가 될 수 있으나, DB상에 누적된 데이터는 천만명이 넘는 상태

3. 귀속근무월 수는 1월 ~ 12월

하여,

성별(남)에 대해 월평균(연간 근로자 수 / 귀속근무월 수)을 구하고자 합니다.

 

조건문으로 case when 문을 사용하였으나, 결과가 도출되지 않아 질의한 사항입니다.

 

select count(성별) from 테이블명 where ((성별 = '1') or (성별 = '2'));

 

그리고 아래에서

when ((성별= '1') or (귀근수 = '1'))

then (trunc(성별 = '1') / 귀근수 = '1') 는

->

case

when (trunc(count(성별 = '1')) /  (귀근수 = '1'))

...

로도 작업해 봤으나 솔루션이 도출되지 않네요.

-----------------------

질문 드립니다.

 

조건은 다음과 같습니다:

성별 : 1(남자), 2(여자) => 남+녀 = 근로자 수

귀속근무월 수 : 1 ~ 12

 

...

case

when ((성별= '1') or (귀근수 = '1'))

then (trunc(성별 = '1') / 귀근수 = '1')

when ((성별= '1') or (귀근수 = '2'))

then (trunc(성별 = '1') / 귀근수 = '2')

...

when ((성별= '2') or (귀근수 = '12'))

then (trunc(성별 = '2') / 귀근수 = '12')

when ((성별= '2') or (귀근수 = '12'))

then (trunc(성별 = '2') / 귀근수 = '12')

else end "성별 월평균 집계표"

...

 

이렇게 조건을 부여했으나, number 값이 아닌 char값이라 오류를 무한대로 뿜어되고 있습니다.

 

선배님들의 조언 부탁 드립니다. ^^

by jkson [2016.06.30 16:54:44]

((성별= '1') or (귀근수 = '1')) -> when에 조건문으로서는 맞겠지만

then 조건 아래 (trunc(성별 = '1') / 귀근수 = '1') 이건 무슨 뜻으로 쓰신 건지?

오류는 무슨 오류가 나시는 건지요?


by Lonnie [2016.06.30 17:12:38]

then 조건 아래 (trunc(성별 = '1') / 귀근수 = '1') 는

성별에 따른 귀근수를 나눈 값을 정의한 사항입니다.

then은 찾고자 하는 결과값을 넣는 것으로 알고 있습니다만, 해당 조건이 결과에 도출해

얻고자 하여 인용한 값을 넣어 봤습니다.

 

에러 사항

누락된 우괄호 - 괄호는 다 채워주고 해당 값에 대해 적절하게 사용하였으나 에러 방출

일관성 없는 데이터 유형 - char이 필요하지만 number 임 에러 방출

 

이런 사항입니다.


by 마농 [2016.06.30 16:56:04]

오류나는 이상한 코드로 질문하시면 안됩니다.

뭘 하고 싶은지에 대한 설명이 전혀 없네요?


by 마농 [2016.06.30 17:18:53]
SELECT 년도
     , 성별
     , COUNT(*) AS 근로자수
     , SUM(근무월수) / COUNT(*) AS 평균근로월수
     , SUM(근무월수) / 12       AS 평균근로자수
  FROM 테이블
 WHERE 년도 = '2015'
 GROUP BY 년도, 성별
;

 


by Lonnie [2016.06.30 18:14:57]

항상 답변 고맙습니다.

해당 내용에 대해 쿼리를 적용한 결과 실행이 되지 않습니다.

자체적으로 구현하였지만, 아무래도 쿼리의 수

즉, 1월에 근무한 근로자의 합을 귀속근무월 수로 나눠야 합니다.

1월부터 12월까지의 합을 구하여 해당 월 평균 값을 남성과 여성으로 나눠서

얻어야 하는 결과라 쉽지 않네요.

 

어서 칼퇴하세요.ㅋ


by 마농 [2016.07.01 14:24:17]

글쎄요?

쉬운 문제를 어렵게 풀고 계신 듯 하네요.

간단한 GROUP BY 문제인 듯 합니다.


by Lonnie [2016.07.01 16:38:20]

우와~~ 감사합니다.

제가 너무 어렵게 가려고 했나봐요!

case when 문으로 해결보고 싶었는데,

다행이도 마농님께서 힌트를 주셔서 해결 되었습니다.

물론, group by로 나타내어 결과를 산출되었습니다만,

가장 큰 팁은 어제 코드에서 대 공사를 수행하니

가볍게 산출되었어요. ^^

감사합니다.

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