혼자 공부하는 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 |