DB/[SQL 입문]
03-3 ORDER BY 문으로 데이터 정렬하기
Itchild
2024. 4. 11. 12:56
728x90
반응형
- ORDER BY 문의 기본 형식
SELECT [열] FROM [테이블] WHERE [열] = [조건값] ORDER BY [열] [ASC, DESC]
1 2
- [열] : 정렬할 열 이름을 입력한다.
- [ASC, DESC] : 정렬 기준에 따라 오름차순, 내림차순을 정의 한다.
- ORDER BY 문을 사용해 1개 열 기준으로 정렬
SELECT * FROM nasdaq_company ORDER BY symbol
symbol 컬럼 기준으로 정렬해서 nasdaq_company 테이블의 목록을 보여줘
SELECT * FROM nasdaq_company ORDER BY company_name
company_name 컬럼 기준으로 정렬해서 nasdaq_company 테이블의 목록을 보여줘
- ORDER BY 문을 사용해 2개 열 기준으로 정렬 : sector, industry 순
SELECT * FROM nasdaq_company
WHERE sector IS NOT NULL AND sector <>''
ORDER BY sector, industry
(정렬순서에 따라 쉼표를 사용해 열 이름을 나열한다. 이때 열 입력 순서에 따라 정렬 우선순위가 정해진다)
-> sector 열에 같은값이 있는 경우 industry 열의 값으로 정렬한다는 뜻
- ORDER BY 문을 사용해 2개 열 기준으로 정렬 : industry, sector 순
SELECT * FROM nasdaq_company
WHERE sector IS NOT NULL AND sector <>''
ORDER BY industry, sector ( 정렬 순서가 다르므로 결과도 다르게 표시된다.)
- 오름차순으로 정렬 하기 (ASC)
SELECT * FROM nasdaq_company
ORDER BY symbol ASC
- 내림차순으로 정렬 하기 (DESC)
SELECT * FROM nasdaq_company
ORDER BY symbol DESC
- 오름차순과 내림차순을 조합해 정렬하기
SELECT * FROM nasdaq_company
WHERE sector IS NOT NULL AND sector <>''
ORDER BY sector ASC, symbol DESC
(각 열 이름 뒤에 ASC,DESC 을 붙인 뒤 쉼표로 연결한다. 입력순으로 정렬 우선순위가 정해지므로 sector
열에서 같은 값이 있는 경우 symbol 열에서 정렬한다.)
- TOP 으로 상위 N개 데이터 검색
SELECT TOP 10 * FROM nasdaq_company
ORDER BY ipo_year DESC, symbol ASC
(상위 N개의 데이터만 보고 싶다면 SELECT 문에 TOP 을 조합한다.)
(ipo_year에서는 내림차순으로 , symbol 에서는 오름차순으로 정렬한 다음 상위 10개의 데이터를 검색하는
쿼리 이다. 상위 N개의 데이터를 검색할 때는 반드시 ORDER BY 문을 사용하는것이 좋다 !!!!!)
(정렬 하지 않으면 어떤 값을 기준으로 정렬한 상위 N개의 데이터가 출력되었는지 알 수 없기 때문이다)
< OFFSET...FETCH NEXT로 지정한 개수만큼 행 건너뛰고 검색하기 >
ORDER BY로 데이터를 정렬한 다음 , 상위나 하위가 아닌 특정 구간의 데이터를 검색해야 하는 경우가 있다.
OFFSET은 검색결과에서 지정한 행 개수 만큼 건너뛰고 출력한다.
- symbol을 기준으로 정렬한다음 1000개의 데이터를 건너뛰고 1001번째 데이터 부터 출력하는 쿼리
1. 조건없이 출력
SELECT * FROM nasdaq_company
ORDER BY symbol
2. 1000개의 데이터를 건너뛰고 출력
SELECT * FROM nasdaq_company
ORDER BY symbol OFFSET 1000 ROWS
--> 조건없이 출력한 결과의 1001번째 데이터가 OFFSET조건을 넣어 출력한 결과의 1번째 데이터와 같다.
주의할 점은 OFFSET은 반드시 ORDER BY 문을 함께 사용해야 한다는 것이다.
- FETCH NEXT 사용하기! FETCH NEXT는 반드시 OFFSET과 함께 사용해야 하며, 출력할 행의 개수를 지정할수 있다
----- 1001 번째 데이터 부터 10개의 데이터를 출력
SELECT * FROM nasdaq_company ORDER BY symbol
OFFSET 1000 ROWS FETCH NEXT 10 ROWS ONLY
728x90
반응형