NSS 라는 National Student Survey 라는 통계를 활용한 문제인데, 솔직히 데이터가 어떻게 담겨있는지 잘 안알려줘서 풀기가 힘들다. 좀 불친절한 것 같다. 전에 문제들은 정말 퀄리티가 좋아서 아쉬워서 하는 말이다...
#1 Check out one row
WHERE절 AND사용
SELECT A_STRONGLY_AGREE
FROM nss
WHERE question = 'Q01' AND
institution = 'Edinburgh Napier University' AND
subject='(8) Computer Science'
#2 Calculate how many agree or strongly agree
WHERE절 AND사용
SELECT institution, subject
FROM nss
WHERE question = 'Q15' AND
score >= 100
#3 Unhappy Computer Students
WHERE절 AND사용
SELECT institution, score
FROM nss
WHERE question = 'Q15' AND
score < 50 AND
subject = '(8) Computer Science'
#4 More Computing or Creative Students?
(Q22 AND '(8) Computer Science') OR (Q22 AND subject='(H) Creative Arts and Design')
이렇게 할 수도 있을 것 같다.
과목별 응답자를 출력한다.
SELECT subject, SUM(response)
FROM nss
WHERE question = 'Q22' AND
(subject='(8) Computer Science' OR subject='(H) Creative Arts and Design')
GROUP BY subject
#5 Strongly Agree Numbers
HINT를 클릭하면 자세히 볼 수 있는데, A_STRONGLY_AGREE가 백분율이어서 응답수를 곱해야 하고 그것을 100으로 나누어야 한다고 쓰여져있다. 솔직히 이해가 잘 안됐다.
아마 내 이해로는 응답자가 100명이고 강한 긍정 비율이 33(퍼센트)이면 33명을 출력하기 위해선 100 * (33 / 100)을 해주어야 한다. 이게 아닐까..
SELECT subject, SUM(response*A_STRONGLY_AGREE/100)
FROM nss
WHERE question='Q22'
AND (subject='(8) Computer Science'
OR subject = '(H) Creative Arts and Design')
GROUP BY subject
#6 Strongly Agree, Percentage
이번엔 비율을 출력해야 한다. ROUND 함수를 사용해서 해결하라고 했지만 아래 코드로 풀었다.
SELECT subject, SUM(response*A_STRONGLY_AGREE)/SUM(response)
FROM nss
WHERE question='Q22'
AND (subject='(8) Computer Science'
OR subject = '(H) Creative Arts and Design')
GROUP BY subject
#7 Scores for Insitutions in Manchester
이번엔 점수 백분율을 출력하면 된다.
SELECT institution, SUM(response*score)/SUM(response)
FROM nss
WHERE question = 'Q22' AND
institution LIKE '%Manchester%'
GROUP BY institution
ORDER BY institution
#8 Number of Computing Students in Manchester
서브쿼리를 사용해야 한다. Q01이면서 맨체스터인 것들의 교육기관 별 총 샘플을 출력해야 한다. 여기까지는 SUM만 사용하면된다. 하지만 컴퓨터 학생 수를 출력하려면 메인 WHERE문에 컴퓨터 학생을 추가할 수 없다. 왜냐면 총 샘플을 이미 구해야하기 때문이다. x의 교육기관과 y의 교육기관이 같으면서 Q01이면서, 컴퓨터 사이언스를 듣는. 을 추가해주면 된다.
SELECT institution, SUM(sample),
(SELECT sample
FROM nss y
WHERE subject='(8) Computer Science' AND
x.institution = y.institution AND
question='Q01')
FROM nss x
WHERE question='Q01' AND
institution LIKE '%Manchester%'
GROUP BY institution
정리하기
솔직히 표 하나만 던져줬으면 풀기 쉬웠을 거다. 막히는게 있으면 답지를 찾아서 보고 연습했다. 영어 공부의 필요성을 느끼게 되는 것 같다.
'프로그래밍 > MySQL' 카테고리의 다른 글
[MySQL] SQL ZOO window functions 답 해설 (0) | 2021.03.11 |
---|---|
[MySQL] SQL ZOO Self join 답 해설 (0) | 2021.03.11 |
[MySQL] SQL ZOO Using Null 답 해설 (0) | 2021.02.22 |
[MySQL] SQL ZOO More JOIN 답 해설 (0) | 2021.02.21 |
[MySQL] SQL ZOO JOIN 답 해설 (0) | 2021.02.21 |