장르별로 그룹화를 해놓은 상태에서
ROUND(AVG(CASE WHEN year = 2010 THEN critic_score END), 2) : OKCASE WHEN g.year = 2011 THEN ROUND(AVG(critic_score), 2) END : ErrorAVG 함수의 안에 조건절이 있냐 밖에 조건절이 있냐의 차이
그룹화한 레코드들 중에서 조건이 만족하는 값들을 추출하고 계산을 진행한다. > (1)
'조건을 만족하면 뒤의 의미를 수행해라'라는 의미로 작성한 쿼리문 > (2)
이 논리는 프로그래밍한다고 생각할 때, 사용하는 논리이고 SQL에서는
GROUP BY로 데이터들을 묶어놓으면 주의해야할 점이 있다. DB Engine은GROUP BY에 맞게 장르별로 데이터를 묶는다. 그 그룹 안에는 연도 별로 데이터가 다 섞여 있다. 압축이 되고 나서 그 후에SELECT조회가 시작되는데, DBMS에서는 뭉치 자체의 연도를 2011~2015 중에서 선정할 수 없는 상태이기 때문에year = 2011이라는 조건을 내걸었을 때 그에 대응되는 값을 출력해낼 수 없는 것이다.