SQL/SQL 기본

SQL 기본(3): ORDER BY, GROUP BY

민서타 2023. 8. 17. 18:24

1. 기본 구문:

SELECT <col> FROM [table] WHERE <col> = [value] ORDER BY [col] [ASC, DESC]

SELECT TOP N <col> FROM [table] WHERE <col> = [value] ORDER BY [col] [ASC, DESC] #상위 N개


SELECT <aggregate function> <col> FROM [table]  GROUP BY  <col> ORDER BY [col]  [ASC, DESC]

SELECT <aggregate function> <col> FROM [table]  WHERE <col> = [value] GROUP BY  <col>

HAVING [aggfunc] <col>] = <value>


DISTICT 중복 제거, 계산은 시행하지 않음 VS GROUP BY 중복 제거, 계산 시행


특정구간 데이터 검색: OFFSET(몇 번째부터 시작)과 FETCH NEXT(다음 어디서부터)[OFFSET과 함께 사용]

-- 기본 문법

SELECT * FROM nasdaq_company
ORDER BY symbol DESC

SELECT * FROM nasdaq_company
ORDER BY ipo_year

-- SECTOR, INDUSTY 순으로 빈값이 없는 것 정렬
SELECT * FROM nasdaq_company
WHERE sector IS NOT NULL AND sector <>''
ORDER BY sector, industry

-- SECTOR, INDUSTY 순으로 빈값이 없는 것 정렬
SELECT * FROM nasdaq_company
WHERE sector IS NOT NULL AND sector <>''
ORDER BY sector, industry

SELECT TOP 10 * FROM nasdaq_company ORDER BY symbol DESC

USE DoItSQL;

WITH CTE (COL1) AS(
SELECT N'ABC' UNION ALL
SELECT N'123' UNION ALL
SELECT N'가나다'
)
SELECT * FROM CTE
ORDER BY COL1 ASC



--데이터 건너뛰고 보기
SELECT * FROM nasdaq_company ORDER BY symbol ASC
OFFSET 1000 ROWS

--1001번부터 1010번
SELECT * FROM nasdaq_company ORDER BY symbol ASC
OFFSET 1000 ROWS
FETCH NEXT 10 ROWS ONLY

--GROUP BY 칼럼이 SELECT에 포함되어 있어야함(*불가)
SELECT SECTOR FROM nasdaq_company
GROUP BY sector ORDER BY sector

SELECT sector, industry FROM nasdaq_company
GROUP BY sector, industry ORDER BY sector, industry

--집계함수 사용
SELECT sector, count(*) AS CNT FROM nasdaq_company
GROUP BY sector ORDER BY sector

--10건 이상 데이터 조회, HAVING절 별칭 사용 불가
SELECT sector, industry, count(*) AS CNT FROM nasdaq_company
GROUP BY sector, industry HAVING count(*) >=10 ORDER BY CNT DESC

--DISTINCT, 집계함수 사용 시 GROUP BY 사용
SELECT DISTINCT sector as CNT FROM nasdaq_company

반응형