관리 메뉴

클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

SQL 기본 문법 6 - 좀 더 깊게 알아보는 SELECT 문 2 : 스스로 실습해보기 본문

알고리즘 및 자료 관리/SQL

SQL 기본 문법 6 - 좀 더 깊게 알아보는 SELECT 문 2 : 스스로 실습해보기

huenuri 2024. 10. 20. 19:39

SELECT ~ FROM ~ WHERE 외에 ORDER BY와 GROUP BY 등 다양한 기능에 대해 살펴볼 것이다.


 

 

 

ORDER BY

 

 

 


 

 

 

ORDER BY 와 WHERE 절은 함께 사용할 수 있지만, 여기서는 순서가 바뀌어서 오류가 발생했다. WHERE가 먼저 나오고 ORDER BY가 나중에 나와야 한다.

 

 

 

 

이번에는 두 조건이 같을 경우 한 가지 조건을 더 추가하여 정렬해볼 것이다. 잇지와 트와이스의 키가 같아서 어느 것이 더 먼저 정렬할지 정해주어야 한다.

 

 

 

 

이렇게 정렬 기준은 1개 열이 아니라 여러 개 열로 지정할 수도 있다.


 

 

 

출력의 개수를 제한 : LIMIT

 

 

 

 

 

 

 

 

 

LIMIT 3, 2는 시작과 개수이다.

 

 

 

 

 


 

 

 

 

 

GROUP BY 절

GROUP BY 절은 그룹으로 묶어주는 역할을 한다.

 

 

구매 테이블에서 회원이 구매한 물품의 개수를 구할 수 있다. 하지만 회원별로 여러 개의 물건을 구입해서 합계를 구하기가 쉽지 않다. 이럴 때 집계 함수를 이용한다.


 

 

 

집계 함수

 

 

 

 

 

 

 

회원이 한 번 구매할 때마다 평균 몇 개를 구매하는지 알아보았다. 이번에는 각 회원이 한번 구매시 평균 몇 개를 구매하는지 알아볼 것이다.

 

 

 

 

 

 

 

 

COUNT(*)은 모든 행의 개수를 세고, COUNT(열_이름)은 열 이름의 값이 NULL인 것을 제외한 행의 개수를 센다.  phone2로 지정해도 같은 결과가 나온다.


 

 

 

 

HAVING 절

 

결과 중에서 총 구매액이 1000 이상인 회원에게만 사은품을 증정하려면 어떻게 해야 할까? WHERE 절을 사용하면 어떻게 될지 결과를 보자.

 

 

 

 

GROUP BY에서는 WHERE를 사용할 수 없다. 

 

 

 

 

HAVING을 사용할 때는 GROUP BY 절 다음에 나와야 한다.

 

 

 

 


 

 

 

학습을 마치고

이제 GROUP BY, ORDER BY, HAVING을 사용하여 정렬하는 법을 알게 되었다. 처음 공부할 때는 그냥 서브쿼리도 이해하지 못했고 HAVING에 WHERE를 쓸 수 없다는 것도 잘 몰랐는데 역시 복습이 정말 중요하다는 걸 느끼는 시간이었다.

너무 빨리 마치는데 중점을 두지 않고 천천히 공부해볼 것이다.