주저리주저리

SQLD 나에게 취약한 부분

zkvlkat /ᐠ。ꞈ。ᐟ\ 2024. 11. 16. 23:27

[문제1]
SELECT 지역, SUM(금액) AS 금액
FROM 지역매출
GROUP BY 지역
ORDER BY  년 DESC;

GROUP BY가 사용 된 컬럼, 혹은 집계함수가 아니면 에러가 발생한다. 그러나

SELECT 지역, 금액
FROM 지역매출
ORDER BY 년;

GROUP BY를 사용하지 않는 경우에는 FROM에서 참조하는 테이블에 존재 하는 행이면 에러가 발생하지 않는다.

[개념2]
다음중 오류가 발생하는 SQL은?
1) GROUP BY에 사용된 컬럼과 집계함수만 SELECT에서 사용 가능하다.
2) HAVING 조건절에는 어떤 함수도 괜찮다.
3) GROUP BY 없이 HAVING 집계함수도 가능하다.

4) AVG(COUNG(*)) 처럼 중첩된 GROUP 함수는 최종적으로 1건이 될 수 밖에 없다.
이때 다른 컬럼에서 집계함수의 값이 여러 개가  출력될 때, 중첩되는 경우, 1건만 출력될 수가 없어서 에러가 발생한다.

[개념1]
ORDER BY (CASE WHEN ID = 999  THEN 1 ELSE ID END)
이 경우 만약 ID가 999라면 숫자 1로 해석을 하고 아니면 ID의 INT값을 기준으로 정렬한다는 의미이다.