Data Analysis/혼공SQL
[혼공SQL] 3-2. SELECT
알밤바
2022. 5. 18. 08:21
728x90
반응형
본 포스팅은 '한빛출판네트워크'의 '혼공SQL' 책을 기반으로 작성한 포스팅입니다.
1. ORDER BY 절
- 순서 정렬
- 기본 값은 ASC (오름차순)
select mem_id, mem_name, debut_date from member
order by debut_date;
- DESC 추가하면 내림차순
select mem_id, mem_name, debut_date from member
order by debut_date DESC;
- ORDER BY절은 WHERE 절 다음에 나와야 한다. (그렇지 않으면 오류 발생)
select mem_id, mem_name, debut_date, height from member
where height >= 164
order by height DESC;
- 정렬 기준을 여러 개 열로 지정할 수 있음
select mem_id, mem_name, debut_date, height from member
where height >= 164
order by height DESC, debut_date ASC;
1.1 LIMIT
- LIMIT는 출력하는 개수를 제한함
- 형식 : LIMIT 시작, 개수 = LIMIT 개수 OFFSET 시작
- LIMIT는 첫 데이터를 0번으로 설정하여 시작함
select * from member
limit 3;
📌 데뷔일자(debut_date)가 빠른 회원 3건만 추출하기
→ order by를 함께 사용
select mem_name, debut_date from member
order by debut_date
limit 3;
📌 평균 키(height)가 4~5번째로 큰 회원 추출하기
select mem_name, height from member
order by height desc
limit 3, 2; -- 3번째부터 2건 조회
1.2 DISTINCT
- 조회된 결과에서 중복된 데이터를 1개만 남김
- 열 이름 앞에 DISTINCT를 써주면 됨
select distinct addr from member;
2. GROUP BY 절
그룹으로 묶어주는 역할을 함
2.1 집계 함수
- GROUP BY와 함께 주로 사용됨
함수명 | 설명 |
SUM() | 합계 |
AVG() | 평균 |
MIN() | 최소값 |
MAX() | 최대값 |
COUNT() | 행의 개수 |
COUNT(DISTINCT) | 고유한 행의 개수 (중복은 1개만 인정) |
📌 각 회원(mem_id) 별로 구매한 개수(amount)를 합쳐서 출력하기
→ 집계함수 SUM()과 GROUP BY 절을 사용
select mem_id, sum(amount) from buy
group by mem_id;
- **별칭(alias)**을 사용해보자
select mem_id '회원 아이디', sum(amount) '총 구매 개수' from buy
group by mem_id;
📌 회원이 구매한 금액의 총합을 출력하기
select mem_id '회원 아이디', sum(price*amount) '총 구매 금액' from buy
group by mem_id;
📌 전체 회원이 구매한 물품 개수(amount)의 평균 구하기
select avg(amount) '평균 구매 개수' from buy;
📌 회원 별 구매한 물품 개수의 평균 구하기
select mem_id, avg(amount) '평균 구매 개수' from buy
group by mem_id;
📌 회원 테이블에서 연락처가 있는 회원의 수를 카운트하기
select count(phone1) '연락처가 있는 회원' from member;
- COUNT(*)는 모든 행의 개수를 카운트함
- COUNT(열_이름)은 열 이름의 값이 NULL인 것을 제외한 행의 개수를 카운트함
2.2 Having 절
- WHERE 절에는 집계 함수를 사용할 수 없음 → 이 때 HAVING 절을 활용하기
- group by와 관련된 조건절은 HAVING을 활용해야 함
📌 총 구매 금액이 1000 이상인 회원 출력하기
select mem_id '회원 아이디', sum(price*amount) '총 구매 금액' from buy
group by mem_id
having sum(price*amount) > 1000;
📌 총 구매 금액이 큰 사용자부터 출력하기
→ order by 사용하기
select mem_id '회원 아이디', sum(price*amount) '총 구매 금액' from buy
group by mem_id
having sum(price*amount) > 1000
order by sum(price*amount) desc;
728x90
반응형