개발공부/혼자공부하는 SQL

[SQL] SELECT문 - ORDER BY, GROUP BY

코푸딩 2023. 3. 7. 10:58
728x90

ORDER BY절

데이터를 정렬해서 조회하기 위해 사용한다.

SELECT ~ FROM ~ WHERE ~ 뒤에 ORDER BY절이 위치한다.

오름차순 정렬이 기본 설정이며 내림차순 정렬 시 DESC를 붙여준다.

//debut_date 기준 오름차순으로 mem_id, mem_name, debut_date를 조회한다
SELECT mem_id, mem_name, debut_date 
   FROM member 
   ORDER BY debut_date;

 

ORDER BY 조건은 여러 개를 사용할 수 있다.

첫 번째 조건으로 정렬 후 동률인 데이터가 있을 경우 두 번째 조건으로 정렬한다.

//height으로 내림차순 정렬 후 동률인 경우 debut_date 기준으로 오름차순 정렬한다
SELECT mem_id, mem_name, debut_date, height
   FROM member 
   WHERE height  >= 164
   ORDER BY height DESC, debut_date ASC;

 

 

 

LIMIT

또한 LIMIT 키워드를 사용하면 상위 N 개의 데이터만 조회할 수 있다

LIMIT N, M 형식으로 사용하면 N번째 데이터부터 M개의 데이터를 조회한다.

ORDER BY절 없이 LIMIT만 단독으로 사용도 가능하다.

//debut_date 오름차순 정렬 후 상위 3개 데이터만 조회한다.
SELECT mem_name, debut_date
   FROM member
   ORDER BY debut_date
   LIMIT 3;
   
//height 내림차순 정렬 후 3번째 데이터부터 2개 조회한다.
SELECT mem_name, height
   FROM member
   ORDER BY height DESC
   LIMIT 3,2;

 

 

 

DISTINCT

조회 결과의 중복을 제거해준다

//동일한 주소가 여러 개면 중복을 없애고 하나만 보여준다.
SELECT DISTINCT addr FROM member;

.

 

 

 

 

GROUP BY절

특정 속성별로 그룹을 지어서 집계 함수를 통해 결과를 조회할 수 있다.

 

ㅇGROUP BY절과 함께 사용하는 집계함수

1. COUNT(): 그룹별 행의 개수(데이터의 개수)를 출력

2. AVG(): 그룹별 속성값의 평균을 출력

3. MIN(): 그룹별 최소값을 출력

4. MAX(): 그룹별 최대값을 출력

5. SUM(): 그룹별 속성값의 총합을 출력

 

//mem_id별 amount*price의 총합을 출력한다
SELECT mem_id "회원 아이디", SUM(price*amount) "총 구매 금액"
   FROM buy 
   GROUP BY mem_id;

 

 

 

HAVING 절

GROUP BY 절에서 조건문을 추가할 때, WHERE절이 아닌 HAVING 절을 사용한다.

 

//HAVING절을 사용하면 GROUP BY절에 조건을 추가할 수 있다.
SELECT mem_id "회원 아이디", SUM(price*amount) "총 구매 금액"
   FROM buy 
   GROUP BY mem_id   
   HAVING SUM(price*amount) > 1000 ;
728x90