# 링크
- solvesql Advent of SQL 2024: https://solvesql.com/collections/advent-of-sql-2024/
- 19일차 - 전국 카페 주소 데이터 정제하기:https://solvesql.com/problems/refine-cafe-address/
# 풀이
SELECT
TRIM(SUBSTR(address, 1, INSTR(address, ' ') - 1)) AS sido,
TRIM(
SUBSTR(
address,
INSTR(address, ' ') + 1,
INSTR(SUBSTR(address, INSTR(address, ' ') + 1), ' ') - 1
)
) AS sigungu,
COUNT(*) AS cnt
FROM
cafes
GROUP BY
sido,
sigungu
ORDER BY
cnt DESC;
- SELECT
- TRIM(SUBSTR(address, 1, INSTR(address, ' ') - 1)) AS sido: address 컬럼의 문자열의 시작부터 첫 번째 공백 바로 전까지의 문자열을 추출한 후 양쪽 공백을 제거한 값을 sido로 저장한다.
- INSTR(address, ' '): address 컬럼의 문자열에서 첫 번째 공백의 위치를 찾는다.
- SUBTR(address, 1, INSTR(address, ' ') - 1): address 컬럼의 문자열의 시작부터 첫 번째 공백 바로 전까지의 문자열을 추출한다.
- TRIM(...): 추출된 문자열에서 양쪽 공백을 제거한다.
- TRIM(SUBSTR(address, INSTR(address, ' ') + 1, INSTR(SUBSTR(address, INSTR(address, ' ') + 1), ' ') - 1)) AS sigungu: address 컬럼의 문자열의 첫 번째 공백 이후부터 두 번째 공백 바로 전까지의 문자열을 추출한 후 양쪽 공백을 제거한 값을 sigungu로 저장한다.
- SUBSTR(address, INSTR(address, ' ') + 1): address 컬럼의 문자열에서 첫 번째 공백 다음 위치부터 끝까지의 문자열을 추출한다.
- INSTR(SUBSTR(address, INSTR(address, ' ') + 1), ' '): address 컬럼의 문자열 중 첫 번째 공백 이후의 문자열에서 첫 번째 공백(= 원래 문자열의 두 번째 공백) 위치를 찾는다.
- INSTR(SUBSTR(address, INSTR(address, ' ') + 1), ' ') - 1: address 컬럼의 문자열에서 두 번째 공백의 바로 이전 문자의 위치를 찾는다(= 첫 번째 공백 이후부터 두 번째 공백 이전까지의 문자열 길이).
- SUBSTR(address, INSTR(address, ' ') + 1, ...): address 컬럼의 문자열의 첫 번째 공백 이후에서 두 번째 공백까지의 문자열을 추출한다.
- TRIM(..): 추출된 문자열에서 양쪽 공백을 제거한다.
- COUNT(*) AS cnt: 데이터의 개수를 계산하여 cnt로 저장한다.
- TRIM(SUBSTR(address, 1, INSTR(address, ' ') - 1)) AS sido: address 컬럼의 문자열의 시작부터 첫 번째 공백 바로 전까지의 문자열을 추출한 후 양쪽 공백을 제거한 값을 sido로 저장한다.
- FROM cafes: cafes 테이블에서 데이터를 가져온다.
- GROUP BY sido, sigungu: sido와 sigungu 컬럼을 기준으로 그룹화한다.
- ORDER BY cnt DESC: cnt 컬럼을 기준으로 내림차순 정렬한다.
728x90
'SQL > solvesql Advent of SQL 2024' 카테고리의 다른 글
[SQL] solvesql Advent of SQL 2024 21일차 (0) | 2024.12.22 |
---|---|
[SQL] solvesql Advent of SQL 2024 20일차 (0) | 2024.12.21 |
[SQL] solvesql Advent of SQL 2024 18일차 (0) | 2024.12.19 |
[SQL] solvesql Advent of SQL 2024 17일차 (2) | 2024.12.18 |
[SQL] solvesql Advent of SQL 2024 16일차 (0) | 2024.12.17 |