SQL Server/연습문제

SQL Server 연습문제 - 연도 및 섹터별 symbol 수 집계 및 조건 필터링

코딩하는냥이 2025. 5. 30. 14:19
반응형

📖 문제 1

nasdaq_company 테이블에서 ipo_year(상장 연도)를 기준으로, 등록된 symbol의 개수를 조회하세요. 결과는 ipo_year를 기준으로 내림차순 정렬하세요.


📦 예제 테이블 정보

CREATE TABLE nasdaq_company (
  symbol VARCHAR(10),
  company_name VARCHAR(100),
  ipo_year INT,
  last_crawel_date DATETIME,
  close_price DECIMAL(10, 2),
  sector VARCHAR(100)
);

📌 예제 정답

SELECT ipo_year, COUNT(symbol) AS symbol_count
FROM nasdaq_company
GROUP BY ipo_year
ORDER BY ipo_year DESC;

💬 해설

  • GROUP BY ipo_year를 통해 각 연도별로 데이터를 묶습니다.
  • COUNT(symbol)은 해당 연도에 상장된 기업 수를 계산합니다.
  • ORDER BY ipo_year DESC는 최근 연도부터 결과를 정렬합니다.

💡 학습 포인트

  • GROUP BY는 데이터를 특정 기준으로 묶을 때 사용
  • COUNT()는 각 그룹 내의 데이터 개수를 구함
  • ORDER BY는 정렬 기준을 지정 (DESC: 내림차순)

📖 문제 2

nasdaq_company 테이블에서 IPO 연도별로 symbol 개수가 20개 이상인 sector 목록을 조회하세요. 결과는 symbol 개수가 많은 순서(내림차순)로 정렬하세요.


📦 예제 테이블 정보

-- 위와 동일한 테이블 구조 사용

📌 예제 정답

SELECT sector, ipo_year, COUNT(symbol) AS symbol_count
FROM nasdaq_company
GROUP BY sector, ipo_year
HAVING COUNT(symbol) >= 20
ORDER BY COUNT(symbol) DESC;

💬 해설

  • GROUP BY sector, ipo_year는 섹터와 연도를 묶어 그룹화합니다.
  • COUNT(symbol)로 각 그룹에서 symbol 수를 집계합니다.
  • HAVING COUNT(symbol) >= 20은 그룹화된 결과 중 20개 이상인 그룹만 필터링합니다.
  • ORDER BY COUNT(symbol) DESC는 개수가 많은 순으로 정렬합니다.

💡 학습 포인트

  • HAVING은 GROUP BY 이후의 집계 결과에 조건을 걸 때 사용
  • GROUP BY는 여러 컬럼 조합으로도 가능
  • 집계 함수(COUNT, SUM, 등)와 조건 필터링을 조합하는 것이 핵심