데이터

깊게 알아보는 select 문

ron_nie 2024. 1. 16. 13:39
728x90

서론

select문은 정렬, 제한, 중복제거등을 사용할 수 있다.

select 문에서 사용 가능한 것들

  1. order by : 정렬
  2. limit : 제한
  3. distinct : 중복된 데이터 제거
  4. group by : 지정한 열의 데이터들을 같은 데이터끼리는 묶어서 결과를 추출
  5. having : group by 와 함께 사용하는 조건 절

order by

결과의 값이나 개수에 대해서는 영향을 미치지 않지만 결과가 출력되는 순서를 조절함

예시

  • 데뷔일자가 빠른 순서대로 출력(기본값 오름차순)
select mem_id, mem_name, debut_date
	from member
	order by debut_date;
  • 데뷔일자가 느린 순서대로 출력(내림차순)
select mem_id, mem_name, debut_date
	from member
	order by debut_date desc;

주의점

order by 절은 where 절 다음에 와야한다

select mem_id, mem_name, debut_date
	from member
	order by debut_date desc
	where height >= 164;   ---> error!

여러개의 정렬 지정하기

  • 평균키가 큰 순서대로 정렬하되, 평균 키가 같으면 데뷔일자가 빠른 순서대로 정렬
select mem_id, mem_name, debut_date
	from member
	where height >= 164
	order by debut_date desc, debut_date asc;

limit

출력하는 개수를 제한합니다

예시

  • 회원 테이블을 조회하는데 전체 중 앞에서 3건만 조회할 수 있다.
select *
	from memeber
	limit 3;
  • 데뷔일자가 빠른 회원 3건만 추출
select mem_name, debute_date
	from memeber
	order by debut_date
	limit 3;
  • 평균 키가 큰 순으로 중간부터 정렬
select mem_name, height
	from member
	order by height desc
	limit 3, 2;

distinct

조회된 결과에서 중복된 데이터를 1개만 남긴다.

예시

select distinct addr from member

Group by

그룹을 묶어주는 역할을 한다.

예시

  • 에이핑크 회원의 경우에 1+2+1+1=5 개의 물건을 구매한 것을 집계하기
select mem_id, sum(amount) from buy group by mem_id;
  • 별칭을 사용해서 보기 좋게 만들어보기
select mem_id "회원 아이디", sum(amount) "총 구매 개수"
	from buy group by mem_id;
  • 회원이 구매한 총합 출력하기
select mem_id "회원 아이디", sum(price*sum) "총 구매 금액"
	from buy group by mem_id;

집계함수

함수명 설명

sum() 합계를 구한다
avg() 평균을 구한다
min() 최소값을 구한다
max() 최대값을 구한다
count() 행의 개수를 센다
count(distinct) 행의 개수를 센다(중복은 1개만 인정)

having

예시

  • 회원 별 총 구매액
select mem_id "회원 아이디", sum(price*amount) "총 구매금액"
	from buy
	group by mem_id;
	having sum(price*amount) > 1000;
  • 총 구매액이 큰 순서대로 정렬
select mem_id "회원 아이디", sum(price*amount) "총 구매금액"
	from buy
	group by mem_id;
	having sum(price*amount) > 1000;
	order by sum(price*amount) desc;
반응형