국비

[ 33일차 2~13 ] 수업 정리 - SQL

코딩하는냥이 2025. 5. 30. 13:56
반응형

🖥️ 수업 개요

오늘은 SQL에서 정렬, 패턴 검색, 상위 N개 출력, OFFSET, 그리고 그룹화(Group By) 기능을 중심으로 학습하였습니다. 특히 LIKE, ORDER BY, TOP, OFFSET, GROUP BY, HAVING 절의 실습을 통해 다양한 형태의 데이터 필터링과 집계 방법을 배웠습니다.


📌 주요 실습 정리

🔍 NULL 조건 조회

SELECT * FROM nasdaq_company WHERE sector IS NULL;
SELECT * FROM nasdaq_company WHERE sector IS NOT NULL;

🔽 정렬 (ORDER BY)

SELECT * FROM nasdaq_company ORDER BY symbol;
SELECT * FROM nasdaq_company ORDER BY company_name;
SELECT * FROM nasdaq_company WHERE sector IS NOT NULL AND sector <> '' ORDER BY sector, industry;
SELECT * FROM nasdaq_company ORDER BY symbol ASC;
SELECT * FROM nasdaq_company ORDER BY symbol DESC;

⬆️ 상위 N개 및 OFFSET

-- 상위 10개만 출력
SELECT TOP 10 * FROM nasdaq_company ORDER BY ipo_year DESC, symbol ASC;

-- 1000개 건너뛰고 이후 출력
SELECT * FROM nasdaq_company ORDER BY symbol OFFSET 1000 ROWS;
-- 1000개 건너뛰고 다음 10개 출력
SELECT * FROM nasdaq_company ORDER BY symbol OFFSET 1000 ROWS FETCH NEXT 10 ROWS ONLY;

🔡 LIKE 연산자 실습

-- 기본 패턴 검색
SELECT * FROM nasdaq_company WHERE symbol LIKE 'A%';  -- A로 시작
SELECT * FROM nasdaq_company WHERE symbol LIKE '%A';  -- A로 끝남
SELECT * FROM nasdaq_company WHERE symbol LIKE '%A%'; -- A 포함
SELECT * FROM nasdaq_company WHERE symbol LIKE 'A_';  -- A로 시작하는 두 글자

-- 문자 범위 및 제외
SELECT * FROM nasdaq_company WHERE symbol LIKE 'A[A-C]%';
SELECT * FROM nasdaq_company WHERE symbol LIKE 'A[^A-C]%'; -- A~C 제외

❓ 연습문제 예시

-- 1. company_name에 'apple' 포함
SELECT * FROM nasdaq_company WHERE company_name LIKE '%apple%';

-- 2. symbol이 AA로 시작하고 L, Q 포함
SELECT * FROM nasdaq_company WHERE symbol LIKE 'AA[L,Q]%';

-- 3. 종가 10~20달러, 이름에 A 없음, 2017년 이후 상장
SELECT * FROM nasdaq_company
WHERE close_price BETWEEN 10 AND 20
  AND company_name NOT LIKE '%A%'
  AND ipo_year > 2017
ORDER BY close_price DESC, ipo_year ASC;

📊 GROUP BY 실습

-- 단일 필드 그룹화
SELECT sector FROM nasdaq_company GROUP BY sector;

-- 그룹별 개수
SELECT sector, COUNT(*) AS cnt FROM nasdaq_company GROUP BY sector;

-- 다중 필드 그룹화 및 정렬
SELECT sector, industry, COUNT(*) AS cnt
FROM nasdaq_company
GROUP BY sector, industry
ORDER BY sector, industry;

-- HAVING 조건 사용
SELECT sector, COUNT(*) AS cnt
FROM nasdaq_company
GROUP BY sector
HAVING COUNT(*) > 1000;

SELECT sector, industry, COUNT(*) AS cnt
FROM nasdaq_company
GROUP BY sector, industry
HAVING industry = 'Advertising' AND COUNT(*) > 10;

💡 포인트 정리

  • ORDER BY는 데이터 정렬 방식 지정 가능 (ASC, DESC)
  • LIKE는 와일드카드 문자 (%, _, [ ], [^ ])로 패턴 매칭
  • TOP, OFFSET, FETCH를 통해 원하는 범위의 데이터만 추출 가능
  • GROUP BY는 필드 기준으로 데이터 집계 가능
  • HAVING은 집계 결과에 조건을 줄 때 사용
  • DISTINCT는 중복 제거용으로 자주 사용됨

📌 정리하자면, 33일차에는 SQL의 고급 필터링과 정렬, 패턴 검색, 데이터 그룹화를 실습하며 복잡한 조건의 데이터를 효율적으로 조회하고 요약하는 방법을 배웠습니다. 실전 분석에서 자주 쓰이는 기능들이므로 꼼꼼히 복습이 필요합니다.