1.ORDER BY 절
- 결과의 값이나 개수에 대해서는 영향을 미치지 않지만, 결과가 출력되는 순서를 조절
- 기본값 ASC :오름차순 정렬, DESC : 내림차순
- WHERE절 다음에 나와야함
- 정렬 기준을 1개 열이 아니라 여러 개 열로 지정 가능
-> 첫 번째 지정 열로 정렬한 후에 동일할 경우 다음 지정 열로 정렬 가능
SELECT 열_이름
FROM 테이블_이름
WHERE 조건식
GROUP BY 열_이름
HAVING 조건식
ORDER BY 열_이름
LIMIT 숫자
ex) 데뷔일자(debut_data)가 빠른 순서대로 출력
SELECT mem_id, mem_name, debut_date
FROM member
ORDER BY debut_date;
ex) 데뷔 순서(debut_date)가 늦은 순서대로 출력
SELECT mem_id, mem_name, debut_date
FROM member
ORDER BY debut_date DESC;
ex) 평균키(height)가 164 이상인 회원들을 키가 큰 순서대로 조회
SELECT mem_id, mem_name, debut_date, height
FROM member
WHERE height >= 164
ORDER BY height DESC;
ex) 평균 키가 큰 순서대로 정렬하되, 평균 키가 같으면 데뷔 일자가 빠른 순서로 정렬
SELECT mem_id, mem_name, debut_date, height
FROM member
WHERE height >= 164
ORDER BY height DESC, debut_date ASC;
1.1 LIMIT
- 출력하는 개수를 제한
- LIMIT 시작, 개수
ex) 데뷔일자(debut_date)가 빠른 회원 3건만 추출
- LIMIT (0,3)과 동일 0번째부터 3개 추출
SELECT mem_name, debut_date
FROM member
ORDER BY debut_date
LIMIT 3;
ex) 평균 키(height)가 큰 순으로 정렬하되, 3번째부터 2건만 조회
SELECT mem_name, height
FROM member
ORDER BY height DESC
LIMIT 3,2;
1.2 DISTINCT
- 중복된 데이터를 1개만 남기고 제거
SELECT DISTINCT addr FROM member;
2.GROUP BY 절
- 그룹으로 묶어주는 역할
2.1 집계 함수
- GROUP BY 절과 함께 쓰이며 데이터를 그룹화(grouping)해주는 기능
함수명 | 설명 |
SUM() | 합계 |
AVG() | 평균 |
MIN() | 최소값 |
MAX() | 최대값 |
COUNT() | 행의 개수 |
COUNT(DISTINCT) | 행의 개수(중복은 1개만 인정) |
ex) 각 회원(mem_id)별로 구매한 개수 (amount)를 합쳐서 출력
- GROUP BY로 회원별로 묶어준 후에 SUM()함수로 구매한 개수 합침
SELECT mem_id, SUM(amount) FROM buy GROUP BY mem_id;
- 별칭 사용
SELECT mem_id "회원 아이디", SUM(amount) "총구매 개수"
FROM buy GROUP BY mem_id;
ex) 회원이 구매한 금액의 총합 출력
- 구매한 금액 가격(price) * 수량(amount)
SELECT mem_id "회원 아이디", SUM(price * amount) "총구매 개수"
FROM buy GROUP BY mem_id;
ex) 전체 회원이 구매한 물품 개수(amount)의 평균
SELECT AVG(amount) "평균 구매 개수" FROM buy;
ex) 각 회원이 한 번 구매시 평균 몇 개를 구매
SELECT mem_id, AVG(amount) "평균 구매 개수"
FROM buy
GROUP BY mem_id;
ex) 회원 테이블(member)에서 연락처가 있는 회원의 수 카운트
- 국번(phone1) 또는 전화번호(phone2)의 열 이름을 지정
- NULL 값인 항목을 제외하고 카운트하여 연락처가 있는 회원의 인원만 나옴
SELECT COUNT(phone1) "연락처가 있는 회원" FROM member;
2.2 Having 절
- 집계함수에 대해서 조건을 제한
- HAVING절은 꼭 GROUP BY절 다음에 나와야 함
ex) 회원별 총 구매액 중 총 구매액이 1000 이상만 추출
SELECT mem_id "회원 아이디", SUM(price*amount) "총 구매 금액"
FROM buy
GROUP BY mem_id
HAVING SUM(price*amount) > 1000;
'데이터 > SQL' 카테고리의 다른 글
[혼공] 4-3장 SQL 프로그래밍 (0) | 2023.08.12 |
---|---|
[혼공] 4-2장 두 테이블을 묶는 조인 (0) | 2023.08.08 |
[혼공] 4-1장 MySQL의 데이터 형식 (0) | 2023.08.07 |
[혼공] 3-3장 데이터 변경을 위한 SQL문 (0) | 2023.08.07 |
[혼공]3-1 select문 기본(1) (0) | 2023.08.04 |