본문 바로가기
MySql

MYSQL - 데이터 조작어(ORDER BY & GROUP BY)

by 지민재 2022. 7. 31.
반응형
SMALL

ORDER BY

  • SQL 문의 실행 결과 행의 순서는 각 DBMS에 저장된 위치에 따라 결정하므로 실행 결과를 특정 순서대로 출력하고 싶으면 ORDER BY 절을 사용
  • 정렬의 기본은 오름차순 , 내림차순으로 정렬하려면 열 이름 다음에 DESC 키워드를 사용

도서를 이름순으로 검색

SELECT * 
FROM Book
ORDER BY bookname;

도서를 가격순으로 검색하고, 가격이 같으면 이름순으로 검색

SELECT * 
FROM Book
ORDER BY price, bookname;

도서를 가격의 내림차순으로 검색하시오. 만약 가격이 같다면 출판사의 오름차순

SELECT * 
FROM Book 
ORDER BY price DESC, publish ASC;

GROUP BY

집계 함수

  • 집계를 하기 위해서는 GROUP BY 문을 사용하고 구체적인 집계 내용은 집계함수를 사용 *최근 버전의 DBMS에서는 다음과 같이 AS를 생략할 수 있다.
  • 고객이 주문한 도서의 총 판매액
SELECT SUM(saleprice)
FROM Orders;
  • 2번 고객이 주문한 도서의 총 판매액을 구하시오.
SELECT SUM(saleprice) AS 총매출
FROM Orders 
WHERE custid=2;

SQL문에서 GROUP BY절을 사용하면 속성 값이 같은 값끼리 그룹을 만들 수 있다. HAVING 절은 GROUP BY 절의 결과 나타나는 그룹을 제한하는 역할

*고객별로 주문한 도서의 총 수량과 총 판매액

SELECT custid, COUNT(*) AS 도서수량, SUM(saleprice) AS 총액
FROM Orders
GROUP BY custid; 

COUNT 집계함수 : COUNT SUM([ALL | DISTINCT | ] 속성이름) COUNT()

  • 가격이 8,000원 이상인 도서를 구매한 고객에 대해서 고객별 주문 도서의 총 수량을 구하시오. 단 두권 이상 구매한 고객만 구하시오.
SELECT SUM(saleprice)
FROM Orders;
SELECT custid, COUNT(*) AS 도서수량
FROM Orders
WHERE saleprice >= 8000
GROUP BY custid 
HAVING COUNT(*) >= 2;

HAVING절은 반드시 GROUP BY절과 같이 작성하고 WHERE 절보다 뒤에 나와야 한다. 그리고 <검색조건>에는 SUM, AVG, MAX, MIN, COUNT와 같은 집계함수가 와야 한다.

'MySql' 카테고리의 다른 글

데이터 모델의 구성 요소  (0) 2022.09.15
데이터베이스 개념  (0) 2022.09.01
MYSQL - 데이터조작어(WHERE 조건)  (0) 2022.07.26
MYSQL - 데이터조작어(SELECT문)  (0) 2022.07.26
MYSQL - 데이터 정의어  (0) 2022.07.20

댓글