안녕하세요.
테이블 1
이름 | 구분코드 | 맞은개수(j) | 틀린개수(s) | 점수 | 최종점수 | 최종플래그 |
이순신 | A | 5 | 1 | 80 | Y | |
이순신 | B | 2 | 1 | 50 | Y | |
홍길동 | C | 4 | 1 | 70 | Y | |
홍길동 | C | 3 | 2 | 60 | Y | |
김유신 | B | 5 | 1 | 80 | Y | |
김유신 | B | 3 | 2 | 60 | Y | |
안중근 | B | 2 | 1 | 50 | Y | |
안중근 | A | 2 | 2 | 65 | Y | |
쯔위 | A | 3 | 2 | 60 | N |
이러한 테이블이 있다면...
최종점수에 출력되는 조건은..
1. 구분코드가 A 또는 C 일때 최종점수 = round(least(1/(틀린개수+0.5),0.5)*점수,1)
2. 구분코드가 B 일때 최종점수 = round(((1-(least(1/(틀린개수+0.5),0.5))*틀린개수)/(맞은개수-틀린개수))*점수,1)
3. 구분코드가 B이고 맞은개수-틀린개수=1 일때 최종점수 = round((((1-틀린개수*least(1/(틀린개수+0.5),0.5))/맞은개수-틀린개수)))*점수,1)
4. ((구분코드가 A or C) && (맞은개수-틀린개수=1) && (틀린개수 =1)) 일때 최종점수 = round((2/3)*점수,1)
5. ((구분코드 =B) && (맞은개수-틀린개수=1) &&(틀린개수=1)) 일때 최종점수 = round((1/3)*점수,1)
6. 맞은개수-틀린개수=0 일때 최종점수 = round((1/틀린개수)*점수,1)
7. 최종플래그=N 무조건 최종점수=0
이런조건에 따라 최종점수 칼럼한개에 출력될수있게끔 하려면 어떻게 해야할까요ㅠㅠ조건이 여러개일때 위에 조건만 만족해버리면 밑에조건은 성립이 안되더군요 ㅠㅠ
감사합니다...
1번이 4번을 포함하므로 작은 범위는 4번입니다.
4 > 1 순서로
5 > 3 > 2 순서로 배치하셔야 합니다.
1 과 2 는 서로 배타적이므로 어느 것이 앞에 오든 상관 없습니다.
다만 6 의 위치가 애매한데요?
6 은 1 과 2 와 겹치는 부분이 존재할 수 있습니다.포함관계는 아니고 일부만 겹칠 수 있습니다.
6 의 위치를 1,2 보다 앞에 둘지? 뒤에 둘지? 우선순위를 정하셔야 합니다.
예1) 6을 뒤에 두는 경우
- 4 > 1 > 5 > 3 > 2 > 6 > 7
- 5 > 3 > 2 > 4 > 1 > 6 > 7
예2) 6을 앞에 두는 경우
- 6 > 4 > 1 > 5 > 3 > 2 > 7
- 6 > 5 > 3 > 2 > 4 > 1 > 7
-- 여러조건 만족시 가장 큰점수 가져오기 SELECT T.* ,CASE WHEN 조건7 THEN 0 ELSE GREATEST ( CASE WHEN 조건1 THEN 조건1점수 ELSE 0 END ,CASE WHEN 조건2 THEN 조건2점수 ELSE 0 END ,CASE WHEN 조건3 THEN 조건3점수 ELSE 0 END ,CASE WHEN 조건4 THEN 조건4점수 ELSE 0 END ,CASE WHEN 조건5 THEN 조건5점수 ELSE 0 END ,CASE WHEN 조건6 THEN 조건6점수 ELSE 0 END ) END LAST_SCOR FROM T