SQL 기초(2) 수식,집계함수(GROUP BY, HAVING)

찌니·2021년 3월 8일
0

SQLBolt 참고

1. Queries with expressions

  • SELECT title, Rating*10 AS RATE
    FROM movies
    INNER JOIN boxoffice
    ON ID=MOVIE_ID 영화 평점 % 구하고 나열하기.

high-level metrics

표현식을 사용해 쿼리의 열 값에 대해 더 복잡한 작성 가능. 이러한 식은 쿼리가 실행될 때 값을 변환하기 위해 기본 산술과 함께 수학 및 문자열 함수를 사용할 수 있다.

식을 사용하면 시간을 절약하고 결과 데이터의 추가 사후 처리를 줄일 수 있지만 쿼리를 읽기 어렵게 만들 수도 있으므로 SELECT식을 사용할 때 AS를 사용해 열 이름을 새로 지정한다.

표현식 외에도 일반 열과 테이블도 출력에서 더 쉽게 참조하고 더 복잡한 쿼리를 단순화하기 위해 별칭을 가질 수 있다.

2. Queries with aggregates

3. Grouped aggregate functions

1) GROUP BY

  • SELECT AGG_FUNC(column_or_expression) AS aggregate_description, …
    FROM mytable
    WHERE constraint_expression
    GROUP BY column;
    모든 행을 집계(aggregate)하는 것 외에도 해당 그룹 내의 개별 데이터 그룹에 집계 함수를 적용 할 수 있습니다 (예 : 코미디 대 액션 영화의 박스 오피스 판매).
    GROUP BY는 지정된 열에 동일한 값을 가진 행을 그룹화하여 작동합니다.

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

2) HAVING

  • 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'

profile
https://gggggeun.tistory.com/

0개의 댓글