
이 데이터를 각각 시, 도 정보를 담고 있는 sido 컬럼과 시, 군, 구 정보를 담고 있는 sigungu로 정제하여 각 행정구역 별로 몇 개의 카페가 있는지 집계하는 쿼리를 작성하기
select sido,sigungu,count(distinct cafe_id) as cnt
from
(select *,
-- substr(컬럼명 , 시작 위치 , 길이)
-- sido : 1부터 ' '을 기준으로 -1인 길이를 잘라 출력
-- sigungu : ' '을 기준으로 문자열 잘랐을 때 그 다음 위치부터 시작, 띄어쓰기를 기준으로 잘랐을때 시작 위치 기준~ 그 다음 띄어쓰기 사이 값 길이 -1 잘라 출력
SUBSTR(address,1, INSTR(address,' ')-1) as sido,
SUBSTR(address, INSTR(address, ' ') + 1, INSTR(SUBSTR(address, INSTR(address, ' ') + 1), ' ') - 1) AS sigungu,
cafe_id
from cafes) t
group by sido,sigungu
order by 3 desc;
sqlite는 substring_index가 작동되지 않아 substr과 instr을 통해서 구했다.
mysql은 substring_index로 풀 수 있으니 이걸로 가볍게 풀면된다..!
❗ substring_inex(substring_index(문자열,구분자,구분자 index),구분자, -1)
substring_index(substring_index(address,' ',1),' ',-1) as sido
substring_index(substring_index(address,' ',2),' ',-1) as sigungu