본문 바로가기

[SQL] 통계 - ALIAS와 집계함수

@xuv22025. 7. 16. 11:10

데이터를 분석하기 위해 통계(총합, 평균 등)를 내야한다면 어떤 방법을 쓸 수 있을까? SQL에서는 이러한 통계와 분석을 위해 집계 함수를 제공한다.

먼저 ALIAS는 테이블명이나 출력 칼럼명의 이름을 지정해 줄 수 있는데, AS 문법과 함께 사용하면 된다. 예시는 다음 쿼리에서 보자


최대 MAX() , 최소 MIN()

만약 롤에서 가장 비싸거나 싼 아이템을 찾고 싶다면 다음과 같이 작성하면 된다.

SELECT MAX(item_price) AS 제일비싼템 FROM items; // 최대

SELECT MIN(item_price) AS 제일싼템 FROM items; // 최소

이렇게 AS로 ALIAS를 정하면 출력 컬럼의 이름이 제일비싼템, 제일싼템으로 출력되게 된다.


평균 AVG()

모든 아이템의 가격의 평균을 내려면 다음과 같이 작성하면 된다.

SELECT AVG(item_price) AS 아이템평균가격 FROM items;

 


총합 SUM()

모든 아이템의 가격의 총합은 다음과 같다.

SELECT SUM(item_price) FROM items;

 


필터링 이후 통계도 내보자

WHERE문으로 먼저 필터링한 데이터에 대한 통계도 가능하다.

다음과 같은 요구조건이 있다고 가정하자. -> 물약 아이템의 가격 평균을 구해주세요 ~

쿼리는 다음과 같이 작성하면 되겠다.

SELECT AVG(item_price) FROM items WHERE item_type = 'potion';

이러면 물약인 아이템들의 평균을 구할 수 있게 된다.


데이터 중복 출력 제거 - DISTINCT

DISTINCT 키워드는 각 행에 있는 값들중에 유니크한 값만 골라서 필터링할 수 있다. 

예를 들어 롤 챔이언들의 출신지가 어디 어디 있는지 종류만 보고 싶다면 다음과 같이 작성하면 된다.

SELECT DISTINCT origin FROM champions;

이렇게 작성하면 아무리 챔피언이 많아도, 하나의 유니크한 값들만 반환받아 확인할 수 있다.

그리고 참고로 DISTINCT로 중복을 제거한 데이터들을 대상으로도 집계함수를 사용할 수 있다.

 


출력 행 개수 제한 - LIMIT

ORDER BY 절에서 출력 데이터 개수를 지정하고 싶으면 다음과 같이 지정해면 된다.

전설에 가갈갱을 보고 싶다면 다음과 같이 적으면 된다.

SELECT * FROM champions ORDER BY champion_name ASC LIMIT 3;

챔피언 이름대로 정렬하고 , ㄱ-ㄴ-ㄷ 그중 상위 3개만 볼 수 있도록 설정하였다.

 

데이터가 너무 많으면 MAX() 이런것을 쓰는것보다 이처럼 ORDER BY로 오름차순 정렬 후 하나만 뽑아내는 것이 성능상 이점이 있을 수 있다.

xuv2
@xuv2 :: xuvlog

폭싹 늙었수다

목차