전체 글(53)
-
[SQL] sql tip - count함수를 활용하여 NULL값 처리하기
count함수는 집계함수의 한 종류이다. 집계함수(sum, min, mas 등)은 NULL값의 데이터는 무시하고 집계하는 특성이 있지만, count의 경우엔 NULL까지 포함해서 집계할수 있다. SELECT SUM(NUM), AVG(NUM), MAX(NUM), MIN(NUM) AS SUM_NUM FROM ( SELECT NULL AS NUM FROM DUAL UNION ALL SELECT 10 AS NUM FROM DUAL UNION ALL SELECT 20 AS NUM FROM DUAL UNION ALL SELECT 30 AS NUM FROM DUAL UNION ALL SELECT 40 AS NUM FROM DUAL ) 여기서 각각의 집계함수는 NULL값은 무시한채로 집계한 것을 알수있다. 또한, or..
2023.09.01 -
[SQL] DML 다중 테이블 검색문 - 집합 연산자
SQL 집합 연산자에서는 수학에서 집합을 공부했다면, 쉽게 이해할수 있는 연산자이다. 하지만 수학에서의 집합과 사용 방법이나 특징에서 조금 더 숙지해야할 내용이 있는데 그 부분들을 정리해 보려고 한다. SQL DML - 집합 연산자 UNION VS UNION ALL 기본적으로 둘 다 합집합 연산자이지만 차이점이 존재한다. 우선은 union은 합집합할 두 SELECT 문을 각각 정렬하고 중복된 데이터를 한 번 빼서 출력한다. 즉, 수학에서 우리가 알고 있는 합집합 연산에 가깝다. 반면에 union all은 중복된 집합을 한번 빼지 않는다. 그렇기에 합집합할 테이블을 각각 정렬할 필요도 없어진다. UNION 연산 결과의 테이블 명과 정렬 SELECT email '이메일/고객', concat(firstName..
2023.08.31 -
SQL 반정규화 정리
SQL에서 반정규화란 정규화의 반대되는 표현이다. SQL 반정규화 보통 정규화는 하나의 테이블을 쪼갬으로써 조회를 함에 있어서 성능을 올리기 위해 사용한다. 반대로 반정규화는 필요에 의해 데이터를 중복하여 성능을 향상시키기 위한 기법인데, 이때 중복을 하다보니 데이터 무결성이 깨질수도 있다는 위험이 존재한다. 하지만 지나치게 정규화 된 데이터는 디스크 I/O량이 많아 성능이 저하되거나 많은 조인 연산으로 계산량이 증가하여 선능이 감소할수 있다. 이를 방지하기 위해 사용할수 있는 하나의 선택지가 반정규화인것이다. 반정규화 절차 반정규화는 치명적인 오류가 생길수 있어 난이도 높은 데이터 모델링 기술이라고 볼 수 있다. 반정규화의 절차를 보면, 1. 반정규화 대상 조사 2. 다른 방법 유도 검토 3. 반정규화..
2023.08.31 -
[SQL] 정규표현식 함수 REGEXP_SUBSTR()의 이해
REGEXP_SUBSTR()의 이해를 위해 예시를 들자면, dmurphy@classicmodelcars.com 이라는 이메일에서 dmurphy 부분과 classicmodelcars 부분을 추출하는 코드를 짜보면, 여기서 [^@]+는 @이 아닌 문자가 1개 이상 있는 문자열을 뜻한다. SELECT REGEXP_SUBSTR(email, '[^@]+') -- 결과 : dmurphy SELECT REGEXP_SUBSTR(REGEXP_SUBSTR(email, '[^@]+',1,2), '[^\\.]+') -- 결과 : classicmodelcars 첫번째 코드는 뒤의 파라미터 값이 없기 때문에 가장 먼저 등장하는 문자열인 dmurphy가 출력된다. 두번째 코드에서는 1, 2의 파라미터 값이 입력했는데 이는 첫번째에..
2023.08.30 -
강서구 빅데이터 공모전 - 공원 연결 산책로 조성
Ⅰ. 공모명: 공원 연결 산책로 조성안 분석 개요 분석 목적 우리 팀은 강서구의 강점을 최대한 활용할 수 있는 데이터를 분석하여 강서구 주민들의 삶의 질 개선에 집중하였다. 강서구 도시 공원의 수는 다른 자치구들에 비해 상대적으로 많은 편이다. 이는 환경복지가 중요한 현 시점에서 큰 장점이다. 반면 강서구의 강력 범죄율은 다른 자치구들에 비해 높은 편이다. 공공 데이터를 활용하여 강서구의 장점으로 단점을 최대한 보완할 수 있는 방법을 생각했다. 배경 및 필요성 서울시가 발표한 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