질문유형 | 평가자유형 | 대상자ID | 대상자 이름 | 평가자 ID | 평가자 이름 | 점수 |
1 | A | 87 | 이순재 | 191 | 송태섭 | 3 |
1 | A | 87 | 이순재 | 274 | 이병진 | 4 |
1 | B | 87 | 이순재 | 138 | 박명수 | 2 |
1 | B | 87 | 이순재 | 291 | 손승근 | 3 |
1 | C | 87 | 이순재 | 510 | 김종필 | 3 |
1 | C | 87 | 이순재 | 1270 | 박형욱 | 3 |
2 | A | 87 | 이순재 | 191 | 송태섭 | 3 |
2 | A | 87 | 이순재 | 274 | 이병진 | 4 |
2 | B | 87 | 이순재 | 291 | 손승근 | 3 |
2 | B | 87 | 이순재 | 138 | 박명수 | 3 |
2 | C | 87 | 이순재 | 1270 | 박형욱 | 4 |
2 | C | 87 | 이순재 | 510 | 김종필 | 5 |
3 | A | 87 | 이순재 | 191 | 송태섭 | 4 |
3 | A | 87 | 이순재 | 274 | 이병진 | 5 |
3 | B | 87 | 이순재 | 291 | 손승근 | 4 |
3 | B | 87 | 이순재 | 138 | 박명수 | 5 |
3 | C | 87 | 이순재 | 510 | 김종필 | 4 |
3 | C | 87 | 이순재 | 1270 | 박형욱 | 3 |
4 | A | 87 | 이순재 | 274 | 이병진 | 5 |
4 | A | 87 | 이순재 | 191 | 송태섭 | 2 |
4 | B | 87 | 이순재 | 291 | 손승근 | 2 |
4 | B | 87 | 이순재 | 138 | 박명수 | 5 |
4 | C | 87 | 이순재 | 1270 | 박형욱 | 4 |
4 | C | 87 | 이순재 | 510 | 김종필 | 5 |
위 데이터로 통계를 하려고 합니다.
질문유형 | 송태섭 | 이병진 | 평균 | 박명수 | 손승근 | 평균 | 김종필 | 박형욱 | 평균 | |
1 | 이순재 | 3 | 4 | 3.5 | 2 | 3 | 2.5 | 3 | 3 | 3 |
2 | 이순재 | 3 | 4 | 3.5 | 3 | 3 | 3 | 5 | 4 | 4.5 |
3 | 이순재 | 4 | 5 | 4.5 | 5 | 4 | 4.5 | 4 | 3 | 3.5 |
4 | 이순재 | 2 | 5 | 3.5 | 5 | 2 | 3.5 | 5 | 4 | 4.5 |
최종 그림은 대상자를 평가한 평가자들 점수를 평균을 내는게 목표인데
도통 합치는게 그려지지 않아 이렇게 도움을 청합니다.
이걸 피벗으로 나태낼수 있나요?
평가자가 동적인 경우 어떡해 되야 할지도 궁금합니다.
피벗 쿼리는 열에 표시할 정보(개수 및 값)가 고정일 때만 사용할 수 있습니다.
가변일 경우엔 동적쿼리를 이용하셔야 합니다.
WITH t(질문유형, 평가자유형, 대상자ID, 대상자이름, 평가자ID, 평가자이름, 점수) AS ( SELECT 1, 'A', 87, '이순재', 191, '송태섭', 3 FROM dual UNION ALL SELECT 1, 'A', 87, '이순재', 274, '이병진', 4 FROM dual UNION ALL SELECT 1, 'B', 87, '이순재', 138, '박명수', 2 FROM dual UNION ALL SELECT 1, 'B', 87, '이순재', 291, '손승근', 3 FROM dual UNION ALL SELECT 1, 'C', 87, '이순재', 510, '김종필', 3 FROM dual UNION ALL SELECT 1, 'C', 87, '이순재', 1270, '박형욱', 3 FROM dual UNION ALL SELECT 2, 'A', 87, '이순재', 191, '송태섭', 3 FROM dual UNION ALL SELECT 2, 'A', 87, '이순재', 274, '이병진', 4 FROM dual UNION ALL SELECT 2, 'B', 87, '이순재', 291, '손승근', 3 FROM dual UNION ALL SELECT 2, 'B', 87, '이순재', 138, '박명수', 3 FROM dual UNION ALL SELECT 2, 'C', 87, '이순재', 1270, '박형욱', 4 FROM dual UNION ALL SELECT 2, 'C', 87, '이순재', 510, '김종필', 5 FROM dual UNION ALL SELECT 3, 'A', 87, '이순재', 191, '송태섭', 4 FROM dual UNION ALL SELECT 3, 'A', 87, '이순재', 274, '이병진', 5 FROM dual UNION ALL SELECT 3, 'B', 87, '이순재', 291, '손승근', 4 FROM dual UNION ALL SELECT 3, 'B', 87, '이순재', 138, '박명수', 5 FROM dual UNION ALL SELECT 3, 'C', 87, '이순재', 510, '김종필', 4 FROM dual UNION ALL SELECT 3, 'C', 87, '이순재', 1270, '박형욱', 3 FROM dual UNION ALL SELECT 4, 'A', 87, '이순재', 274, '이병진', 5 FROM dual UNION ALL SELECT 4, 'A', 87, '이순재', 191, '송태섭', 2 FROM dual UNION ALL SELECT 4, 'B', 87, '이순재', 291, '손승근', 2 FROM dual UNION ALL SELECT 4, 'B', 87, '이순재', 138, '박명수', 5 FROM dual UNION ALL SELECT 4, 'C', 87, '이순재', 1270, '박형욱', 4 FROM dual UNION ALL SELECT 4, 'C', 87, '이순재', 510, '김종필', 5 FROM dual ) SELECT 질문유형 , 대상자이름 , AVG(CASE WHEN 평가자유형 = 'A' AND 평가자ID = 191 THEN 점수 END) A_송태섭 , AVG(CASE WHEN 평가자유형 = 'A' AND 평가자ID = 274 THEN 점수 END) A_이병진 , AVG(CASE WHEN 평가자유형 = 'A' THEN 점수 END) A_평균 , AVG(CASE WHEN 평가자유형 = 'B' AND 평가자ID = 138 THEN 점수 END) B_박명수 , AVG(CASE WHEN 평가자유형 = 'B' AND 평가자ID = 291 THEN 점수 END) B_손승근 , AVG(CASE WHEN 평가자유형 = 'B' THEN 점수 END) B_평균 , AVG(CASE WHEN 평가자유형 = 'C' AND 평가자ID = 510 THEN 점수 END) C_김종필 , AVG(CASE WHEN 평가자유형 = 'C' AND 평가자ID = 1270 THEN 점수 END) C_박형욱 , AVG(CASE WHEN 평가자유형 = 'C' THEN 점수 END) C_평균 FROM t WHERE 대상자ID = 87 GROUP BY 대상자ID, 대상자이름, 질문유형 ORDER BY 대상자ID, 대상자이름, 질문유형 ;