case 문 질문 0 3 1,447

by 쌈장묵자 [SQL Query] [2016.01.19 16:42:34]


직종

종목

필수/선택

시기

점수

일치

일치

필수

일치

10

 

불일치

9

선택

일치

8

 

불일치

7

불일치

필수

일치

5

 

불일치

4

선택

일치

3

 

불일치

2

불일치

 

 

 

0

그 전에 있던 select 창에 조건을 검색해서 점수를 넣어줘 total에 이 가산점을 넣어주는 쿼리를 짜야하는데

select를 해서 점수를 넣어 주는 쿼리를 짜야 하는데 case문을 써야 할꺼 같은데 어떻게 짜야 할지 감이 안오네요 ㅠㅠ;;

case문 안에 case문을 또 넣어야 할지? 어떻게 하는게 좋을까요?

추가 자료->

이름

희망과정

성실성

필요성

협동성

가산점

평가총점수

컴퓨터

10

10

10

10

40

수학

9

9

9

9

36

과학

8

8

8

8

32

영어

7

7

7

7

28

최종적으로 만들려고 하는 창입니다. 지금은 가산점이 없고 성실성,필요성, 협동성으로만 평가 총점수를 

내고 있습니다. 여기에 가산점이라는 걸 추가 할려고 합니다. 이 가산점을 다른 위에 조건처럼 줄려고하는데

서로 다른테이블에서 code값 등을 가져와서 조인해서 해야 합니다

선생님이 지정해준 과정과 학생이 신청한 과정이 같고 선생이 필수라고 지정해주고 선생이 지정해준 기간안에 맞는

기간을 신청하면 가산점 10점을 주는 이런식으로 가는겁니다. 

프로그램으로는 if문 써서 equal사용해서 하면 될꺼 같은데 쿼리로 짤려고 하니 힘드네요 ㅠ 

설명이 부족한점 죄송합니다;;

 

by 마농 [2016.01.19 16:48:19]

예시자료를 보여 주세요.

1. 원본자료

2. 조건자료

3. 결과자료


by 마농 [2016.01.19 17:19:08]

말씀하신 4가지 항목의 일치여부를 판단하기 위해서는
선생님이 추천한 내역의 테이블 레이아웃과
학생이 신청한 내역의 테이블 레이아웃을 알아야 할 듯 한데요.


현실세계의 상황을 봤을 때...
선생님이 한 학생당 1개만 추천할까요?
여러개 추천하게 되면 상황은 상당히 복잡해 지게 됩니다.


일단 완벽하게 상황을 단순화 시켜서....
신청내역과 추천내역은 학생번호로 1:1 조인이 가능하다는 가정하에...
점수표를 분석해 보면 일정한 규칙(항목별 가중치)이 보이네요.
계산식이 의외로 간단해 질 것 같네요.

SELECT a.학번
     , a.직종, a.종목, a.필수, a.시기
     , CASE WHEN a.직종 = b.직종
            THEN 2
               + CASE WHEN a.종목 = b.종목 THEN 5 ELSE 0 END
               + CASE WHEN a.필수 = b.필수 THEN 2 ELSE 0 END
               + CASE WHEN a.시기 = b.시기 THEN 1 ELSE 0 END
            ELSE 0
        END AS 점수
  FROM 신청 a
     , 추천 b
 WHERE a.학번 = b.학번
;

 


by 쌈장묵자 [2016.01.19 17:27:47]

우오 정말 생각하는게 다르시군요 저는 무조건 10 9 8 7 이렇게 하나씩 점수를 줄려고만 생각했는데 이렇게 +를 하실줄은 몰랐네요 ㅎㅎ 많은 도움 됬습니다

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