안녕하세요, 혼자 공부하는 SQL을 보고 학습한 자료를 남깁니다.
ORDER BY 절
SELECT문의 차례는 꼭 지켜야 합니다.
ORDER BY 절은 결과를 바꾸진 않는다. 다만 차례를 바꾼다.
작업할 때 이렇게 전체 데이터베이스 구성도를 펼쳐 놓고 프로그래밍을 하는 것이 좋다.
드래그한 부분 즉 ORDER BY 절은 제외하고 한 번 쿼리를 실행을 해보자.
Work bench를 끄고 다시 실행을 하면 USE 데이터베이스가 지워집니다. 그래서 다시 USE 문을 실행을 해주어야 합니다.
ORDER BY를 사용을 하면 자동으로 오름차순을 사용을 한다.
DESC를 사용을 하면 내림차순을 사용을 한다.
ASC는 보통 생략된다.
만일 SELECT문 순서가 다르면 오류가 발생한다.
잇지와 트와이스는 키가 같다. 이렇게 동률일 때는 ORDER BY에 컬럼을 더 추가해서 추가한 컬럼으로 순서를 더 나눌 수 있다.
그래서 만일 키가 같을 시 데뷔 일자로 순서를 정렬하는 쿼리문을 만들 수 있다.
LIMIT을 사용을 하면 3개의 행을 잘라서 보여준다.
그래서 조회한 결과에서 위 3개의 행만 자르고 나머지는 안 보여준다.
WHERE 절은 생략은 가능하지만, 순서가 변경되는 것은 안 된다.
데뷔 일자 오름차순으로 정렬하여 조회한 결과를 LIMIT 명령어를 통해서 3개의 행만을 잘라서 조회한다.
LIMIT은 반드시 ORDER BY절 다음에 나와야 한다.
LIMIT에도 옵션이 있다.
예를 들어 LIMIT 3,2를 하면
3번째 초과부터 2개를 조회한다.
예를 들어 회원이 사는 지역을 알고 싶다.
컬럼에 addr 만을 조회를 하면 여러 지역들이 나오게 된다.
그러면 DISTINCT문을 사용하면 굉장히 편리하다.
중복된 컬럼을 다 제거하고 하나씩만 보여준다.
회원들은 딱 5개의 지역에서만 살고 있다는 것을 알 수 있게 된다.
GROUP BY절
GROUP BY는 그룹으로 서로를 묶어주는 것이 바로 GROUP BY 에요.
회원들의 buy 테이블을 알아보려고 한다.
각각 회원이 몇개 구매를 했는지 알고 싶어해요.
GROUP으로 묶어서 합계를 구하고 싶다.
그러면 집계함수를 쓰면 된다.
SUM()함수를 사용을 하면 합계를 구할 수 있다.
mem_id별로 그룹을 묶어가지고 합계를 내라.
mem_id별로 묶어서 SUM() 합계를 내라의 의미이다.
이렇게는 우리가 직접 합칠 수가 없다. 그래서 GROUP BY절 및 집계 함수를 사용한다.
회원 아이디 및 총 구매 개수의 별칭을 주어서 조금 더 깔끔하게 결과를 조회할 수 있다.
총 구매 금액이 궁금할 수 있다.
이 경우 price * amount 의 SUM을 구하면 된다.
회원이 한 번 올때 마다 몇개 씩 구매하는지 평균을 구하고 싶다.
그러면 AVG()함수를 사용을 하면 된다.
그러면 각 mem_id별 평균 구매 개수를 구할 수가 있다.
COUNT() 함수를 사용을 하면 총 갯수를 구할 수가 있다.
COUNT(*)를 하면 *은 모든 행을 의미하기 때문에 모든 행의 갯수를 파악한다.
예를 들어, 만일 핸드폰이 있는 회원만 조회를 하고 싶다면 COUNT(phone1) 을 사용해서 조회를 하면 된다.
COUNT() 함수는 비어있는 행은 조회를 하지 않는다.
별칭을 사용해서 이쁘게 결과를 출력했다.
mem_id별 총 구매 금액이 1000 초과인 그룹을 구하려고 한다.
하지만 WHERE SUM(price*amount) > 1000 을 사용하면 오류가 발생하는 것을 확인할 수 있다.
그래서 HAVING절을 써야 한다.
그룹함수를 조건절로 사용하고 싶다면
HAVING절을 사용해라
그러면 결과가 정상적으로 조회가 된 것을 볼 수 있다.
만일 결과를 ORDER BY를 하고 싶다면 ORDER BY 절에 집계 함수를 추가할 수 있다.
그러면 결과가 차례가 정렬되어서 조회된 것을 볼 수 있다.
감사합니다.
https://www.youtube.com/watch?v=6qkPy7RfLqQ&list=PLVsNizTWUw7GCfy5RH27cQL5MeKYnl8Pm&index=8
'SQLD' 카테고리의 다른 글
[혼자 공부하는 SQL] MySQL의 데이터 형식 (정수형, 문자형, 실수형, 날짜형)과 형 변환 (0) | 2024.10.25 |
---|---|
[혼자 공부하는 SQL] 데이터 변경을 위한 SQL문 (INSERT, UPDATE, DELETE) (1) | 2024.10.25 |
[혼자 공부하는 SQL] SQL 기본 문법(SELECT~FROM~WHERE) (1) | 2024.10.25 |
[혼자 공부하는 SQL] 데이터베이스 개체(인덱스, 뷰, 스토어드 프로시저) (0) | 2024.10.25 |
[혼자 공부하는 SQL] 데이터베이스 만들기 (0) | 2024.10.25 |