인프런 커뮤니티 질문&답변

Lean SQL님의 프로필 이미지

작성한 질문수

[백문이불여일타] 데이터 분석을 위한 고급 SQL

서브쿼리 해커랭크 문제풀이 (08:08)

Alias 사용 위치에 관한 질문

20.08.11 17:54 작성

·

259

5

안녕하세요.
고급이 되면서 좀 더 복잡해졌지만,
차근차근 설명해주셔서 잘 듣고 있습니다. :)

1. AS를 사용할 수 있는 위치가 궁금합니다. 저희 조 프로검색러가 아래와 같은 내용을 구하셨는데요.

column_alias can be used in an ORDER BY clause, but it cannot be used in a WHERE, GROUP BY, or HAVING clause.

저렇게 쓸 수 있고 없는 곳에 대해 조금 더 이해하고 싶어서.. (예. WHERE절을 작업(?)할 때 아직 열의 값이 결정되지 않았으므로?) 되는 부분과 그렇지 않은 부분에 관한 설명을 해주시면 좋을 것 같습니다. 아니면 단순히 외우게 될 거 같아서요.. ㅠㅠ

2. AS 대신 스페이스 공백으로도 AS 적용이 된다는 사실을 알게됐는데요. 공백으로 텍스트를 대체하는 경우에도 절에 따른 사용 가능/불가능 여부가 AS와 같게 적용될까요?

고맙습니다.

답변 1

4

송혜정님의 프로필 이미지
송혜정
지식공유자

2020. 08. 11. 22:40

안녕하세요 수희님, 답변 드립니다.

1. 첨부해주신 내용이 맞으며, 이유는 SQL 쿼리 실행 순서와 관련이 있습니다.
FROM, JOIN 절을 통해 해당되는 테이블을 먼저 스캔한 후, WHERE 절, GROUP BY 절, HAVING절 순서대로 조건을 확인하고 SELECT절에 쓰여진 내역들을 추출합니다. 그 후, ORDER BY 절 내용이 있을 경우 해당 내역대로 정렬이 이루어 집니다.
이처럼 ORDER BY는 SELECT에 쓰인 alias가 적용된 이후에 실행되기 때문에, SELECT에 사용한 alias는 ORDER BY 절에서는 사용이 가능하지만 SELECT절 이전에 이미 실행된 다른 절에는 사용이 불가 합니다.
도움이 될 웹사이트 링크를 첨부하니 참고해주세요. Order of execution of a Query

2. 적어주신 것처럼 as를 사용하지 않고 공백만으로도 alias 적용이 가능합니다. 이 경우에도 쿼리 실행 순서는 변함이 없기 때문에 as 사용 시와 동일한 1의 내용이 적용 됩니다.

좋은 질문 감사드리며, 답변이 도움이 되셨길 바랍니다.
이 내용에 대한 추가 질문이 있으시거나, 강의 수강하시면서 다른 질문이 생기시면 언제든지 질문 남겨주세요 :)

Lean SQL님의 프로필 이미지

작성한 질문수

질문하기