1) 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;
desc를 사용하면 내림차순으로 정렬이 가능하다.
order by를 사용할 때 select, from, where, group by, order by 의 순서를 지키지 않으면 오류가 발생하니 주의하자.
- 정렬 기준 값을 2개 이상으로 하고 싶다면?
SELECT mem_id, mem_name, debut_date, height
FROM member
WHERE height >= 164
ORDER BY height DESC, debut_date ASC ;
정렬 우선순위에 따라 정렬의 기준이 되는 열이름을 적고 정렬 방법을 옆에 지정해나가면 된다.
- LIMIT : 볼 데이터의 개수 지정
SELECT mem_name, height
FROM member
ORDER BY height DESC LIMIT 3,2 ;
LIMIT 3으로 사용하면 정렬 기준 상위 3개만 보겠다는 의미
LIMIT 3,2는 정렬 기준 상위 3번째에서 2개만 보겠다는 의미
- DISTINCT : 중복되는 데이터에서 고유 값을 추출 (python의 unique함수와 유사)
SELECT DISTINCT addr FROM member;
2) group by : 기준이 되는 열을 지정하고 집계함수를 사용할 수 있게 함
SELECT mem_id, SUM(amount) FROM buy GROUP BY mem_id;
이 코드를 예시로 설명해본다면 mem_id의 값들을 그룹으로 묶어서 amount값의 총합계(sum)를 구한다.
집계 함수의 종류에는 sum, avg, min, max, count 등이 있다.
- AVG
SELECT mem_id, AVG(amount) "평균 구매 개수" FROM buy GROUP BY mem_id;
mem_id의 값들을 그룹으로 묶어서 amount값의 평균값(AVG)을 구한다.
- COUNT
1. SELECT COUNT(*) FROM member ;
2. SELECT COUNT(phone1) "연락처가 있는 회원" FROM member ;
위 코드의 1번은 전체 행렬을 가지고 와서 행 개수가 몇 갠지 알고 싶을 때 주로 사용한다.
2번은 member중에서 그룹별로 phone1에 데이터 값이 기입되어 있는 수를 합한다.
- HAVING : ORDER BY를 사용할 때 WHERE의 역할을 대신한다.
SELECT mem_id "회원 아이디", SUM(price*amount) "총 구매 금액"
FROM buy
GROUP BY mem_id
HAVING SUM(price*amount) > 1000
ORDER BY SUM(price*amount) DESC;
거듭 언급하지만 SELECT, FROM, GROUP BY, HAVING, ORDER BY의 순서를 준수하자.
'SQL' 카테고리의 다른 글
MySQL의 데이터 형식(정수형, 문자형, 실수형, 날짜형) (0) | 2023.03.27 |
---|---|
데이터 변경을 위한 SQL 문(INSERT, UPDATE, DELETE) (0) | 2023.03.26 |
예제로 보는 SQL 기본 문법 (select~from~where) (0) | 2023.02.08 |
데이터베이스 개체(인덱스, 뷰, 스토어드 프로시저) (0) | 2023.02.08 |
데이터베이스 만들기 (0) | 2023.02.08 |