분류 전체보기(91)
-
강서구 빅데이터 공모전 - 공원 연결 산책로 조성
Ⅰ. 공모명: 공원 연결 산책로 조성안 분석 개요 분석 목적 우리 팀은 강서구의 강점을 최대한 활용할 수 있는 데이터를 분석하여 강서구 주민들의 삶의 질 개선에 집중하였다. 강서구 도시 공원의 수는 다른 자치구들에 비해 상대적으로 많은 편이다. 이는 환경복지가 중요한 현 시점에서 큰 장점이다. 반면 강서구의 강력 범죄율은 다른 자치구들에 비해 높은 편이다. 공공 데이터를 활용하여 강서구의 장점으로 단점을 최대한 보완할 수 있는 방법을 생각했다. 배경 및 필요성 서울시가 발표한 2040 서울도시기본계획을 바탕으로 강서구에 적합한 아이디어를 찾던 중 서울도시기본계획에 포함된 보행 일상권을 활용한 아이디어를 선정했다. 보행 일상권은 걸어서 30분 이내로 주거와 일자리, 여가활동 등을 모두 누릴 수 있는 권리를..
2023.08.27 -
[SQL] INSTR 함수와 SUBSTR 함수를 활용한 문자열 내의 특정 문자 추출
SQL을 활용해 코딩을 하다보면 문자열로 이루어진 컬럼에서 특정 문자를 뽑아내 쓰고싶은 경우가 있다. 대표적으로 핸드폰 전화번호의 맨뒷자리, 이메일에서 @ 표시 뒤, 즉 사이트 관련 정보를 담은 부분 등이 있다. INSTR 함수와 SUBSTR 함수를 활용하여 그 기능을 수행할 수 있다. INSTR(str, substr) : str에서 첫번째 나타나는 부분 문자열 substr의 시작 위치를 리턴함. ex) INSTR(99-999-9999, '-') = 3 여기서 -는 문자열 내에서 총 두 번 등장하지만, 첫번째로 등장하는 위치의 인덱스 3이 도출된다 SUBSTR(str, position[ , length]) : str의 position부터 length 만큼의 문자열을 리턴함. length가 생략되면, 마지..
2023.08.26 -
[SQL] GROUP BY와 집계 함수를 사용할 때 주의할 점
문제 위 문제는 집계함수를 활용해 여러 값들을 출력하는 문제인데, 주문 별로 GROUP BY한 이후 집계함수를 적용한다면 상품수의 평균은 count() 함수와 AVG()함수를 함께 사용해야 하고, 주문액합계의 평균은 SUM()과 AVG()함수를 함께 사용해야 한다. 이때, 하나의 테이블에서 두개의 집계함수를 모두 사용한다면, 에러가 발생한다. WITH temp AS ( SELECT orderNo,count(quantity) '상품수', sum(priceEach * quantity) '주문액합계' FROM s_orderDetails GROUP BY orderNo ) SELECT count(orderNo) '주문수', AVG(상품수) '상품수의 평균', AVG(주문액합계) '주문액합계의 평균' FROM te..
2023.08.25 -
[SQL] GROUP BY, HVING 절 간단한 응용
포인트는 proudctLine컬럼을 기준으로 group by를 할 때, HVING 절을 활용해 상품수가 20개인 productLine만을 선택해야 하는 것이다. -- 코드를 입력하세요 SELECT productLine, count(*) '상품수', avg(buyPrice) '평균 구매단가', min(buyPrice) '최소 구매단가', max(buyPrice) '최대 구매단가' FROM s_products GROUP BY productLine HAVING count(*) >= 20 ; 이때 상품수에 대해 고민하는게 아니라 그냥 HAVING count(*) >= 20 을 사용한다면 productLine별로 새롭게 분류된 값들이 각 proudctLine별로 몇개나 있는지를 바로 적용할 수 있다.
2023.08.24 -
SQL - SQL로 PIVOT 테이블 만들기
피벗은 원시 데이터의 테이블을 통해 통계 요약 테이블을 만드는 방법이다. Oracle에서는 PIVOT() 함수를 통해서 쉽게 통계요약 테이블을 만들수 있지만 표준 SQL의 기능만으로도 충분히 만들수 있다. 문제 코드 -- 코드를 입력하세요 SELECT o.city, COALESCE(SUM(CASE MONTH(p.paymentDate) WHEN 1 THEN 1 END), 0) '1월', COALESCE(SUM(CASE MONTH(p.paymentDate) WHEN 2 THEN 1 END), 0) '2월', COALESCE(SUM(CASE MONTH(p.paymentDate) WHEN 3 THEN 1 END), 0) '3월', COALESCE(SUM(CASE MONTH(p.paymentDate) WHEN 4..
2023.08.14 -
SQL - CTE를 이용해 Date Series 만들기
문제 코드 -- 코드를 입력하세요 WITH RECURSIVE allDates (date) AS ( SELECT '2004-11-01' UNION ALL SELECT date + INTERVAL 1 DAY FROM allDates WHERE date + INTERVAL 1 DAY
2023.08.12