SQL 20

[분석실습] SQL 서브쿼리(SUBQUERY), 서브쿼리 예시

안녕하세요. 이번 포스팅에서는, SQL의 꽃이라 불리는 서브쿼리를 준비했습니다. 실무 데이터 분석을 하신다면 꼼꼼히 봐주세요 서브쿼리 하나의 sql문에 포함되어있는 또다른 sql문 주요 서브쿼리 위치 : from절 서브쿼리는 언제 사용할까요? 하나의 sql문으로 풀 수 없는 조금 더 복잡한 데이터를 추출할 때! depth1, depth2 이런식이죠 예시로 함께 이해해보겠습니다 1. 2개 이상의 상품을 구매한 고객은, 주로 어떤 상품을 구매했을까요? 위 문제는 한번에 구하기 어렵습니다 지금까지 배운것으로 진행해보자면 1) 2개 이상의 상품을 구매한 고객 아래와 같이 구할 수 있습니다 여기에 having절을 추가해서 2개 이상의 상품을 구매한 고객을 추출합니다 select hcrc.custid , count..

IT_SQL 2021.11.17

[분석 기초] SQL 데이터 유형 총정리(문자형, 숫자형, 날짜형, 참/거짓, 변환)

안녕하세요. 이번 포스팅에서는, SQL 데이터 유형 총정리를 준비했습니다. 실무 데이터 분석을 하신다면 꼼꼼히 봐주세요 데이터유형 문자형 : CHAR, VARCHAR(가변길이 문자열), LONG, CLOB 숫자형 : INT(정수), BIGINT(정수길이에 확신이 없을때 사용), NUMERIC(소수점 있는 숫자), FLOAT(소수점 길이에 제한X), DOUBLE(소수점 길이에 제한X) 날짜형 : DATE(연월일), TIMESTAMP(지금 시간 몇초까지) 참/거짓 : BOOLEAN timestamp 예시) 데이터 유형 변환방법 1. 숫자문자 : - CAST(컬럼명 AS 데이터유형) - 컬럼명 :: 데이터유형 2. 문자날짜 문자->날짜 : to_date(컬럼명, 'yyyymmdd(이 컬럼의 형식)') 날짜->..

IT_SQL 2021.11.17

[분석실습] SQL 데이터 사칙연산 심화 (날짜변환, 연산, 고유값)

안녕하세요. 이번 포스팅에서는, SQL의 사칙연산 심화 구문들을 준비했습니다. 실무 데이터 분석을 하신다면 꼼꼼히 봐주세요 사칙연산 심화 거래데이터, 고객데이터를 이용해서 인당 평균 구매 수량과 금액을 구해보겠습니다 1. 인당 구매수량 (상품코드 goodcd의 갯수를 세어서 계산. 한번의 거래row에 상품을 1개씩만 샀다고 가정) select htrc.custid , count(goodcd) --상품코드 갯수->상품갯수 from hds_transactions_rea_csv htrc join hds_customers_rea_csv hcrc on htrc.custid = hcrc.custid group by 1 고객별로 몇개의 상품을 샀는지 확인할 수 있습니다 *고객 수 아래처럼 고객 id를 세어보면 136..

IT_SQL 2021.11.16

[분석실습] SQL 데이터 사칙연산 (round, 소수점, 반올림, 퍼센트~)

안녕하세요. 이번 포스팅에서는, SQL의 사칙연산 구문들을 준비했습니다. 실무 데이터 분석을 하신다면 꼼꼼히 봐주세요 사칙연산 다루기 고객데이터와 거래데이터로 간단한 계산을 해보면서 사칙연산 구문들을 살펴보겠습니다 1. 할인률 구하기(할인액/구매액) select dis_amt / tot_amt as discount_rate from hds_transactions_rea_csv htrc 결과가 0으로 나옵니다.. 왜냐하면 dis_amt, tot_amt 칼럼은 자료형 자체가! 둘다 소수점이 없는 정수형이기 때문입니다 -> 이경우 둘 중 하나라도 소수점이 있으면 소수점이 계산되어 도출됩니다 소수점이 나올 수 있도록 dis_amt 칼럼을 numeric 형식으로 변환하겠습니다(현재는 integer 정수형) * 참..

IT_SQL 2021.11.14

[분석실습] SQL 데이터 날짜함수 가공하기(now, date_part, current, interval ~)

안녕하세요. 이번 포스팅에서는, SQL의 날짜 함수 가공 구문들을 준비했습니다. 실무 데이터 분석을 하신다면 꼼꼼히 봐주세요 날짜 함수 * 날짜함수는 오라클, MYSQL 등등 모두 다른편이라 구글링 해서 사용해야 합니다. 구글링 팁은 맨 아래에 있으니, 참고해주세요 1. 날짜함수 -POSTGRESQL 기준 now() current_timestamp current_date select now() select current_timestamp 두개 모두 같은 결과가 나옵니다 current_date를 사용하면, 시간없이 연,월,일 이 나오게됩니다 sql마다 다르니 날짜함수는 외우지 않아도 됩니다 2. 날짜 형식에서 문자 형식으로 변환 (to_char) 지금 시간에서 날짜 형식을 변환해보겠습니다 select to..

IT_SQL 2021.11.12

[분석실습] SQL 데이터 가공하기(Case When, 범위/그룹화)

안녕하세요. 이번 포스팅에서는, SQL의 데이터 가공 구문들을 준비했습니다. 실무 데이터 분석을 하신다면 꼼꼼히 봐주세요 Case When 1. 원하는 컬럼으로 변경하기 (엑셀의 IF 함수-> CASE WHEN THEN (ELSE) END) 아래와 같이 SEX컬럼에는 0,1,2가 있습니다 0=무효, 1=남성, 2=여성 이라는 의미로 구성되어있는데요 여성2, 남성1을 F,M으로 변환해보겠습니다 select distinct case when sex=1 then 'M' when sex =2 then 'F' else 'NA' end from customers_csv cc - 마지막에 END를 꼭 붙여주어합니다! * 만약 ELSE를 쓰지않으면?, 분류에 포함되지않은 값은 모두 NULL로 반영이 됩니다 2. 범위로..

IT_SQL 2021.11.12

[분석실습] SQL 원하는 형식으로 데이터 가공(숫자->문자, 문자열 자르기/붙이기, 숫자null->0)

안녕하세요. 이번 포스팅에서는, SQL의 데이터 가공 구문들을 준비했습니다. 실무 데이터 분석을 하신다면 꼼꼼히 봐주세요 SQL 데이터 가공 1. 숫자->문자열 아래 데이터의 sales_time 은 현재 숫자로 되어있습니다 문자열로 변환해보겠습니다 cast select sales_time, cast(sales_time as varchar) as var_st from transactions_amt_csv tac 문자열로 바꿔졌습니다. 헷갈리지 않도록 as 별칭도 지정했습니다 2. 문자열 컬럼에서 일부만 잘라내기 아래 sales_date 데이터(0000-00-00형식)에서 연도만 잘라보겠습니다 연, 월, 일 모두 잘라볼게요 맨 왼쪽 월은 left함수, 중간에 있는 월은 substring 함수 맨 오른쪽 일은..

IT_SQL 2021.11.11

[분석 실전] SQL JOIN 주의사항. duplication, 중복 키!

안녕하세요. 이번 포스팅에서는, JOIN에서 주의할 구문들을 준비했습니다. 실무 데이터 분석을 하신다면 꼼꼼히 봐주세요 join의 주의사항 1. 행 중복 사례 조인 키에 특정테이블에 중복값이 있으면, 조인 결과 중복이 발생합니다 (따로 오류로 뜨지 x.) SQL오류창에서 알려주지 않으니 꼭 주의! 테이블의 듀플리케이션(duplication) (;듑이라고 보통 말합니다) key가 유니크한지 꼭 확인해야합니다 직접 보여드릴게요 ex> 위 테이블1, 2의 join결과는? 중복되는 key 33이 두번 나옵니다. 꼭 유의해야합니다 * 참고로, key칼럼이 두번나왔죠. 중복되는 칼럼과 테이블은 조건절에 명시하거나, 으로 명시해줍니다 select id, "name" , d."key" , test from dup d ..

IT_SQL 2021.11.06

[분석 실전] SQL JOIN 심화(2). join 종류와 구문 팁! inner join, left join~

안녕하세요. 이번 포스팅에서는, JOIN을 통해서 여러 테이블을 연결하는 구문 상세팁을 준비했습니다. 실무 데이터 분석을 하신다면 꼼꼼히 봐주세요 JOIN 구문 종류! 앞 포스팅에서 KEY 값이 null인 경우에는, 해당 행이 삭제된다고 말씀드렸죠? 하지만, JOIN 에도 여러 유형이 있습니다 1. Inner Join(대표적인 join) 결과 : 두개 테이블 모두 공통으로 존재하는 행만 남음 필요 : 두개 테이블에 join키가 빠짐없이 둘다 존재할 때 2. Left Join 결과 : 왼쪽 테이블을 기준으로 오른쪽 테이블에 조인되는 값이 없는 경우에는 null로 표기됨 필요 : 한개 이상의 테이블에 join key에 null값이 있거나, 테이블1에 있는값이 테이블2에 없을때 사용 ex> key를 날려버리면..

IT_SQL 2021.11.04

[분석 실전] SQL JOIN 심화. where절 추가하기, 테이블 연결하기 구문 팁!

안녕하세요. 이번 포스팅에서는, JOIN을 통해서 여러 테이블을 연결하는 구문 상세팁을 준비했습니다. 실무 데이터 분석을 하신다면 꼼꼼히 봐주세요 JOIN 꿀팁! 1. 구매 고객 성별에 따른 매출액 분석 (구매금액 높은 순으로 내림차순) transaction 테이블과 customer 테이블을 join합니다! select cc.sex, sum(tot_amt) as sum_tot_amt from transactions_amt_csv tac join customers_csv cc on tac.custid =cc.custid group by 1 order by 2 desc 성별=2(여성)의 매출액이 더 높네요(매출액별로 내림차순 정렬을 추가했습니다) 2. 성별, 생년별 매출액 구하기 (매출액 높은순으로 내림차순..

IT_SQL 2021.11.03