[혼공S] 2주차 _SELECT문의 ORDER BY와 GROUP BY 활용

2025. 1. 18. 00:44·SQL/혼자 공부하는 SQL

 

 


 

 

혼자 공부하는 SQL

✔️ SELECT문

✔️ SELECT + WHERE문

✔️ ORDER BY(정렬) - 2주차(2) 블로그 참조

✔️ GROUP BY(그룹핑) - 2주차(2) 블로그 참조

✔️ 데이터 변경 위한 쿼리 작성 - 2주차(3) 블로그 글 참조

 

 


 

 

✔️ ORDER BY(정렬)

 

결과의 값이나 개수에 대해 영향 미치지 X

결과가 출력되는 순서 조절(정렬)

-- order by 정렬 기준
-- asc(오름차순 정렬/생략 가능)

select 
	mem_id,
    mem_name,
    debut_date
from member
order by debut_date;

-- desc(내림차순 정렬/생략X)

select 
	mem_id,
    mem_name,
    debut_date
from member
order by debut_date desc;

 

 

order by 절과 where 절을 함께 사용하는 경우

예) 평균 키가 164 이상인 회원들을 키가 큰 순서대로 정렬

-- where절이 order by 절보다 뒤에 존재한다면
-- SQL 구문이 처리되지 않고 오류 발생함

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; -- asc는 생략 가능

 

 

 

# LIMIT

출력의 개수를 제한하는 경우 활용

예) 회원 테이블 전체 열을 나타내는데 전체 중 앞에서 3건만 조회

select
	*
from member
limit 3;

-- 0번째부터 3건을 조회한다는 의미

select 
	mem_name,
    debut_date
from member
order by debut_date
limit 3;

 

 

중간부터 출력하는 겻도 가능

중복된 결과를 제거(distinct)하는 것도 가능

-- 3번째부터 2개의 결과 조회

select 
	mem_name,
    debut_date
from member
order by debut_date
limit 3, 2;


-- 중복된 주소를 제거한 경우

select
	distinct addr
from member;

 

 


 

 

✔️ GROUP BY(그룹핑)

 

그룹으로 묶어주는 역할

예) 회원별로 여러 건의 물건 구매 존재 및 각각의 행 별도 출력

select 
	mem_id,
    amount
from buy
order by mem_id;

 

 

 

# 집계 함수

SUM() : 합계

AVG() : 평균

MAX() : 최대값

MIN() : 최소값

COUNT() : 행의 개수 셈

COUNT(DISTINCT) : 행의 개수를 셈(중복은 1개까지만)

 

 

- 합계

예) 각 회원 별로 구매한 개수를 합계 도출

select 
	mem_id,
    sum(amount)
from buy 
group by mem_id;

-- 별칭을 사용하여 바로 확인 가능

select 
	mem_id as '회원 아이디',
    amount as '총 구매 개수'
from buy
order by mem_id;

 

 

- 평균

예) 회원 구매 금액 총합 및 전체 회원 구매 물품 개수의 평균 고려

select mem_id,
sum(price * amount) as '총 구매 비용'
from buy
group by mem_id;

-- 전체 회원이 구매한 물품 개수

select 
	avg(amount) as '평균 구매 개수'
from buy;

 

 

-  행의 개수

select 
	count(*)
from member;

-- 연락처가 존재하는 회원만 카운트 진행

select 
	count(phone1) as '연락처 있는 회원' -- as 생략 가능
from member;

 

 


 

 

# GROUP BY + HAVING절 

 

 

회원별 총 구매액 조회

select 
	mem_id '회원 아이디',
    sum(price * amount) as '총 구매 금액'
from buy
group by mem_id;

-- 조건에 해당하는 경우를 확인하기 위해 where 절 활용
-- 집계 함수의 경우, where 절에 나타낼 수 없음

select 
	mem_id '회원 아이디',
    sum(price * amount) as '총 구매 금액'
from buy
where sum(price * amount) > 1000 -- 위 구문은 오류를 발생시킴
group by mem_id;

 

 

where절 대신 havig절을 사용하여 집계함수에 대해 조건에 맞는 값 조회 가능

select
	mem_id '회원 아이디',
    sum(price * amount) as '총 구매 금액'
from buy
group by mem_id
having sum(price * amount) > 1000;

-- 총 구매액이 큰 순서대로 나타내기 위해서는 order by절 활용

select
	mem_id member_ID,
    sum(price * amount) as total
from buy
group by mem_id
having total > 1000 -- group by와 havig절에서는 별칭으로 사용 가능(where절 X)
order by 2 desc; -- 컬럼 순서대로 위에서부터 1,2,3,... 지정되므로 total desc와 동일 의미 내포

 

 


 

 

# 확인문제 2번 풀이 진행

 

-- 1번 문제 

SELECT * FROM member ORDER BY height;

 

 

-- 2번 문제 

SELECT * FROM member LIMIT 5,2;

 

 

-- 3번 문제 

SELECT DISTINCT phone1 FROM member;

 

 


 

 

SELECT문의 ORDER BY와 GROUP BY의 내용을 다루었으며

다음 글에서 데이터 변경 위한 쿼리 작성에 대해 알아보겠습니다

https://everyonelove.tistory.com/41

 

[혼공S] 2주차_테이블의 데이터 입력, 수정, 삭제까지

혼자 공부하는 SQL✔️ SELECT문✔️ SELECT + WHERE문✔️ ORDER BY(정렬) - 2주차(2) 블로그 참조✔️ GROUP BY(그룹핑) - 2주차(2) 블로그 참조✔️ 데이터 변경 위한 쿼리 작성 - 2주차(3) 블로그 글 참조  

everyonelove.tistory.com

 

반응형

'SQL > 혼자 공부하는 SQL' 카테고리의 다른 글

[혼공S] 4주차_제약조건을 활용한 테이블 및 가상 테이블(VIEW) 생성 및 활용  (0) 2025.02.03
[혼공S] 3주차_MySQL 데이터 형식과 JOIN(조인), SQL 프로그래밍 활용  (1) 2025.01.23
[혼공S] 2주차_SELECT문과 WHERE절 활용  (0) 2025.01.18
[혼공S] 2주차_테이블의 데이터 입력, 수정, 삭제까지  (0) 2025.01.18
[혼공S] 1주차_DB부터 MySQL 활용까지  (0) 2025.01.09
'SQL/혼자 공부하는 SQL' 카테고리의 다른 글
  • [혼공S] 3주차_MySQL 데이터 형식과 JOIN(조인), SQL 프로그래밍 활용
  • [혼공S] 2주차_SELECT문과 WHERE절 활용
  • [혼공S] 2주차_테이블의 데이터 입력, 수정, 삭제까지
  • [혼공S] 1주차_DB부터 MySQL 활용까지
DAILYSEEKER
DAILYSEEKER
데이터 분석 공부 열심히 하는 중😁
  • DAILYSEEKER
    ECODATALIST
    DAILYSEEKER
  • 전체
    오늘
    어제
  • 글쓰기 관리자
    • DATA (224)
      • SQL (18)
        • SQLD (3)
        • 데이터 분석을 위한 MySQL (5)
        • 혼자 공부하는 SQL (10)
      • Python (39)
        • 데이터 분석을 위한 Python (32)
        • 데이터 분석을 위한 데이터 스크래핑 (4)
        • 데이터 분석 프로젝트 (3)
      • 기획 (3)
        • 서비스 기획 (1)
        • 기업 분석 (2)
      • Frontend(프론트엔드) (22)
        • 데이터 분석을 위한 웹 개발 언어 (9)
        • 자바스크립트 (13)
        • 타입스크립트 (0)
      • 코딩 테스트 (86)
        • 프로그래머스_MySQL (86)
      • Data Driven (12)
        • 코드 없이 배우는 데이터 분석 (6)
        • Excel (5)
      • UI & UX (24)
        • 피그마(Figma) (24)
      • BDA 학회 (20)
        • BDA학회_8기 (4)
        • BDA학회_9기 (16)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
DAILYSEEKER
[혼공S] 2주차 _SELECT문의 ORDER BY와 GROUP BY 활용
상단으로

티스토리툴바