Project⚡️/Team Project

[SQL] 서울시 내에 있는 따릉이 데이터 SQL

파카파오 2024. 4. 16. 20:21

# 따릉이 대여소란?

여러 개의 거치대가 모여있는 곳

 

 

 

 

# 따릉이 거치대란?

자전거 1개 수용 가능

 

 

# 데이터 관계

따릉이 거치대 > 따릉이 대여소 > 강남구 / 송파구 / 서초구

따릉이 대여 + 따릉이 반납 > 각 대여소별 이용 횟수

와의 관계를 분석하였다

 

 

# 문제

1) rent_data 내에서 구, 정류장이름, 정류장 id를

빌려간 정류장이름, 빌려간 정류장 id, 받은 정류장이름, 받은 정류장를

중복된 행도 그대로 통합하기

 

SELECT gu, rent_nm, rent_id AS id 
FROM rent_data
UNION all
SELECT gu, rtn_nm AS rent_nm, rtn_id AS id 
FROM rent_data

 

 

 

- 갯수 세보기

select count(*)
from (
SELECT gu, rent_nm, rent_id AS id 
FROM rent_data
UNION all
SELECT gu, rtn_nm AS rent_nm, rtn_id AS id 
FROM rent_data
) a

 

 

 

 

 

2) 1)의 상태에서

구와 정류장 이름을 그룹으로 묶어서 이용 횟수를 출력하기

출력순서는 구 오름차순, 이용횟수 내림차순으로 출력하기

 

-> 결과적으로 빌려간정류장, 받은정류장은 따로따로 count해서 더해진

SELECT gu, rent_nm, count(*) as usage_count
FROM (
SELECT gu, rent_nm, rent_id AS id FROM rent_data
UNION all
SELECT gu, rtn_nm AS rent_nm, rtn_id AS id FROM rent_data
) a
GROUP BY 1,2
ORDER BY 1,3 desc

 

 

 

 

3) 2)의 상태에서

각 구 별로 이용횟수에 대한 일련 번호를 구하시오

단, 순서는 이용 횟수에 대해서 내림차순이다

 

SELECT gu,
	   rent_nm,
	   COUNT(*) AS usage_count,
	   ROW_NUMBER() OVER (PARTITION BY gu ORDER BY COUNT(*) DESC) AS rnk
  FROM (
    SELECT gu, rent_nm, rent_id AS id FROM rent_data
    UNION all
    SELECT gu, rtn_nm AS rent_nm, rtn_id AS id FROM rent_data
  ) AS combined
  GROUP BY gu, rent_nm