SQLBolt 참고
SELECT title, Rating*10 AS RATE
FROM movies
INNER JOIN boxoffice
ON ID=MOVIE_ID
영화 평점 % 구하고 나열하기.high-level metrics
표현식을 사용해 쿼리의 열 값에 대해 더 복잡한 작성 가능. 이러한 식은 쿼리가 실행될 때 값을 변환하기 위해 기본 산술과 함께 수학 및 문자열 함수를 사용할 수 있다.
식을 사용하면 시간을 절약하고 결과 데이터의 추가 사후 처리를 줄일 수 있지만 쿼리를 읽기 어렵게 만들 수도 있으므로 SELECT식을 사용할 때 AS를 사용해 열 이름을 새로 지정한다.
표현식 외에도 일반 열과 테이블도 출력에서 더 쉽게 참조하고 더 복잡한 쿼리를 단순화하기 위해 별칭을 가질 수 있다.
SELECT AGG_FUNC(column_or_expression) AS aggregate_description, …
FROM mytable
WHERE constraint_expression;
SELECT AGG_FUNC(column_or_expression) AS aggregate_description, …
FROM mytable
WHERE constraint_expression
GROUP BY column;
ex) SELECT role,AVG(Years_employed)
FROM employees
GROUP BY role
-> For each role, find the average number of years employed by employees in that role
SELECT group_by_column, AGG_FUNC(column_expression) AS ``aggregate_result_alias, …
FROM mytable
WHERE condition
GROUP BY column
HAVING group_condition;
: to filter grouped rows from the result set.
The HAVING clause constraints are written the same way as the WHERE clause constraints, and are applied to the grouped rows.
🎁 WHERE (Not a group) = GROUP & HAVING (group)
- WHERE vs GROUP BY vs GROUP BY & HAVING
SELECT role,COUNT(*) FROM employees WHERE Role='Artist'
SELECT role,COUNT(*) FROM employees Group by Role
SELECT Role,Sum(Years_employed) FROM employees GROUP BY ROLE HAVING ROLE ='Engineer'