- 목적
- 정렬 --> 원하는 기준에 맞춰서 정렬!!
- order by 정렬기준(들) → 필터링을 하고, 정렬을 해야함
- 정렬기준 -> 오름차순 asc/ 내림차순 desc (약자)
- ***내가 보고자 하는 데이터가 다 처리가 된 이후에, 순서만 변경해서 봅시다
- from ~~ where ~~ order by ~~
- Q) 고객들의 정보들을 가입한 날짜 순서대로 보자 → 이름, 가입 날짜만 보자
select * from usertbl;
select name, mDate from usertbl; -- PK 중심으로 되어있어서 순서 뒤죽박죽
select name, mDate from usertbl
order by mDate; -- 가입날짜 기준 오름차순
select name, mDate from usertbl
order by mDate asc; -- 가입날짜 기준 오름차순
select name, mDate from usertbl
order by mDate desc; -- 가입날짜 기준 내림차순
# ==> 내가 어떤 기준으로 볼지 명시 --> 기준을 작성하면 됨
# order by 전까지 특별한 정렬에 대한 지시가 없다면? -> PK를 오름차순으로 하면 됨
- Q) 고객들의 정보들 중에서 이름, 키, 가입일자만 보고자 함
- 키는 내림차순, 혹시 키가 같은 고객이 있다면 -> 이름을 오름차순(사전순)으로 정렬해서 보여줘라
- ⇒ python : sorted(리스트, key = lambda x : -x[0], x[1])
select name, height, mDate from usertbl;
select name, height, mDate from usertbl
order by height desc, name asc;
- ****중요 ) 종북된 값을 제거하고, 하나의 유니크한 값만 보자
select addr from usertbl;
select addr from usertbl
order by addr;
# --> 우리 고객들이 사시는 지역은 어떻게 되는지?
select distinct addr from usertbl
order by addr;
select distinct addr from usertbl;
# --> 결과는 같지만, 결과의 순서가 다른 이유
# 특별하게 순서 order by 지정하지 않으면 pk 기준으로 정렬됨
# order by를 지정해야 그 순서로 정렬
- 참고) limit N : 보여주는 것을 N개로 제한
- 기본기능 : 보여주는 row/데이터 수를 제한(너무 많을 때는 일부만 보자)
- PK/ 정렬 기준 : 중심으로 N 컷
- 분석/처리 : Top 10, Top 5 : 음반판매숫자를 기준 --> 정렬 --> 상위 5개 컷 Top5 (order by ~~ + limit 5)
- Q) 고용관련된 테이블을 보면서 : 사번, 입사날짜만 보도록 하자
- 입사일 기준으로 오름차순, 그 다음 기준은 제한 X
- 목적 : 근속연수가 제일 오래된 5명을 선정해서 공로패 수상
select * from employees;
select * from employees limit 3; -- 테이블과 데이터 체크용에 대한 limit
select emp_no, first_name, last_name, hire_date
from employees;
select emp_no, first_name, last_name, hire_date
from employees
limit 5; -- 이 쿼리는 5개-> 결과는 맞지만 기준이 제대로 되었는지 모름
select emp_no, first_name, last_name, hire_date
from employees
order by hire_date asc;
# --> 입사일이 같은 사람들이 5명 넘어서 10명으로 늘리겠다
select emp_no, first_name, last_name, hire_date
from employees
order by hire_date asc
limit 10;
# ++ 이름이 이렇게 쪼개져 있어서 불편하다면 --> 합쳐서 이름으로 보자
select emp_no, concat(first_name, last_name) `FullName`, hire_date
from employees
order by hire_date asc
limit 10;
# ===> 대신 : 1985-01-14 입사자가 더 있는지 애매모호함
# 동차인 애들은 오로지 선착순을 적용
select 순서 상 구조
- select ~~~~~ from ~~~ (where ) order by ~~~ limit
- 지금까지 특징 : select 다음에 보려고 하는 항목들은 테이블에 있는 컬럼/ 필드로 주어진 것들임
- 다음에 볼 특징
- select 그대로 보는게 아니라 집계처리/ 함수처리 ~~~ 보자
- 테이블에 있는 값 그대로 보는 것이 아니라 집계처리/함수 처리 해서 보자
- ex) 테이블에 모든 학생들의 수학 성적 기록 → 모든 학생들의 수학 성적을 가지고 와서 그대로 보지 말고 이 점수들의 대표값(평균, 최고값, 최저값) 처리를 해야함