SQL로 데이터 분석의 마법을 부리다: 필터링과 정제의 비밀 🧙‍♂️💻

 안녕하세요, 데이터 마법사 여러분! 오늘은 SQL을 사용한 데이터 분석의 핵심 기술인 필터링과 정제에 대해 알아보겠습니다. 이 글을 통해 여러분도 데이터 분석의 마법사가 될 수 있을 거예요! 🎩✨

 데이터 필터링: 원하는 정보만 쏙쏙 골라내기 🎣


 WHERE 절로 시작하는 마법


SQL에서 데이터 필터링의 기본은 WHERE 절입니다. 이것은 마치 마법 지팡이와 같아요!


```sql

SELECT * FROM 고객테이블

WHERE 나이 >= 30 AND 성별 = '여성';

```


이 쿼리는 30세 이상의 여성 고객만을 선택합니다. 간단하죠?


 NULL 값 다루기: 숨겨진 보물 찾기 🕵️‍♀️


NULL 값은 데이터베이스의 미스터리한 존재입니다. 이를 찾아내는 방법은 다음과 같습니다:


```sql

SELECT * FROM 주문테이블

WHERE 배송일자 IS NULL;

```


이 쿼리로 아직 배송되지 않은 주문을 찾을 수 있어요!


 고급 필터링 기술: 데이터 분석의 고수되기 🏆


 윈도우 함수: 시간 여행하기


윈도우 함수를 사용하면 데이터의 흐름을 볼 수 있습니다. 마치 시간 여행을 하는 것 같죠!


```sql

SELECT 

    상품명,

    판매일자,

    판매량,

    AVG(판매량) OVER (ORDER BY 판매일자 ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS 이동평균

FROM 판매테이블;

```


이 쿼리는 각 판매 기록에 대해 직전 2일과 현재의 3일 이동 평균을 계산합니다. 트렌드를 한눈에 볼 수 있어요!


 정규 표현식: 패턴의 마법사 🧙‍♀️


정규 표현식은 복잡한 문자열 패턴을 찾는 강력한 도구입니다.


```sql

SELECT * FROM 이메일테이블

WHERE REGEXP_LIKE(이메일주소, '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$');

```


이 쿼리는 유효한 이메일 주소만을 필터링합니다. 스팸 메일 퇴치에 완벽해요!


 데이터 정제: 깨끗한 데이터로 변신 🧼✨


 중복 제거: 데이터 다이어트


중복 데이터는 분석 결과를 왜곡시킬 수 있습니다. 다음과 같이 제거할 수 있어요:


```sql

DELETE FROM 고객테이블

WHERE 고객ID NOT IN (

    SELECT MIN(고객ID)

    FROM 고객테이블

    GROUP BY 이름, 이메일, 전화번호

);

```


이 쿼리는 동일한 이름, 이메일, 전화번호를 가진 중복 고객 중 가장 낮은 ID만 남기고 나머지를 삭제합니다.


 데이터 표준화: 통일성의 마법


데이터 표준화는 일관성 있는 분석을 위해 필수적입니다.


```sql

UPDATE 주소테이블

SET 도시명 = TRIM(UPPER(도시명));

```


이 쿼리는 모든 도시명을 대문자로 변환하고 앞뒤 공백을 제거합니다. 깔끔하죠?


 실전 응용: 데이터 마법사의 일상 🧙‍♂️📊


 금융 사기 탐지: 수상한 거래 찾기 🕵️‍♂️


```sql

WITH 일일거래통계 AS (

    SELECT 

        고객ID,

        거래일자,

        AVG(거래금액) AS 평균거래액,

        STDDEV(거래금액) AS 거래액표준편차

    FROM 거래테이블

    GROUP BY 고객ID, 거래일자

)

SELECT * FROM 거래테이블 t

JOIN 일일거래통계 s ON t.고객ID = s.고객ID AND t.거래일자 = s.거래일자

WHERE t.거래금액 > s.평균거래액 + (3 * s.거래액표준편차);

```


이 쿼리는 고객의 일일 평균 거래액보다 3 표준편차 이상 높은 거래를 찾아냅니다. 사기 거래를 잡아내는 데 유용하죠!


 의료 데이터 분석: 환자 정보 보호하기 🏥🔒


```sql

SELECT 

    CONCAT(SUBSTRING(환자명, 1, 1), REPEAT('*', LENGTH(환자명) - 1)) AS 마스킹된_환자명,

    진단명,

    처방약

FROM 진료기록

WHERE 진단일자 BETWEEN '2023-01-01' AND '2023-12-31';

```


이 쿼리는 환자의 이름을 마스킹하여 개인정보를 보호하면서 2023년의 진료 기록을 조회합니다.


 마치며: 당신도 이제 데이터 마법사! 🎉


SQL을 활용한 데이터 필터링과 정제 기술을 익히면, 여러분도 데이터 분석의 마법사가 될 수 있습니다. 이 기술들을 연습하고 실제 데이터에 적용해보세요. 놀라운 인사이트를 발견할 수 있을 거예요!


데이터 마법의 세계에 오신 것을 환영합니다. 여러분의 SQL 여정에 행운이 함께하기를! 🍀💻





#SQL #데이터분석 #데이터필터링 #데이터정제 #윈도우함수 #정규표현식 #데이터마법사 #데이터과학 #프로그래밍 #비즈니스인사이트 #데이터베이스 #정보보호 #분석기술 #Python #데이터시각화



0 댓글