데이터 처리/SQL

DAY 2 / [solvesql] Advent of SQL 2024 3문제 (지자체별 따릉이 정류소 개수 세기, 언더스코어(_)가 포함되지 않은 데이터 찾기, 게임을 10개 이상 발매한 게임 배급사 찾기)

yourhm 2025. 5. 14. 10:56

지자체별 따릉이 정류소 개수 세기

SELECT local
     , COUNT(DISTINCT station_id) AS num_stations
FROM station
GROUP BY local
ORDER BY num_stations

 

 

 

언더스코어(_)가 포함되지 않은 데이터 찾기

SELECT DISTINCT page_location
FROM ga
WHERE page_location NOT LIKE '%\_%'
ORDER BY page_location

 

요점

1. _는 LIKE에서 "임의의 한 글자"로 쓰이기 때문에, 이를 문자 그대로의 언더스코어(_)로 인식시키기 위해서는 역슬래쉬(\)로 escape 처리를 해야한다.

 

정규표현식을 사용하여 아래와 같이 작성할 수 있다.

SELECT DISTINCT page_location
FROM ga
WHERE page_location NOT REGEXP '[_]'
ORDER BY page_location

 

 

[복습노트] 정규표현식 (Regular Expression)

https://limhm4907.tistory.com/218

 

정규 표현식(Regular Expression)

정규 표현식이란?프로그래밍에서 문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일종의 형식 언어를 말한다. 정규식이라고도 부른다. 정규 표현식은 사용되는 언어마다 문법이 조금

limhm4907.tistory.com

 

 

 

게임을 10개 이상 발매한 게임 배급사 찾기

SELECT c.name
FROM companies AS c
INNER JOIN (
  SELECT publisher_id
      , COUNT(DISTINCT game_id) AS cnt_games
  FROM games
  GROUP BY publisher_id
  HAVING cnt_games >= 10 ) AS cal
  ON c.company_id = cal.publisher_id

 

순서대로 생각해보기

1. 게임 배급사 ID별로 게임 ID를 카운트 -> 게임이 10개 이상인 배급사만 필터링
2. games 테이블과 companies 테이블을 조인하여 게임 배급사 이름만 조회