IT_SQL 23

[분석실습] 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

Question) join 후 sum 오류

아래 1번과 2번에서 달라진 것은 join의 차이입니다 조인해주니 0으로는 나눌 수 없다고나오네요?;;.... 왜 그런 걸까요..? 1.조인 없이 sum 계산 -sum을 '0/0' 분모 분자 따로해도, 묶어줘도 (값은 다르지만) 계산 정상 select buyer_nm , sum(cast(dis_amt as numeric)) / sum(tot_amt) as discount_rate from hds_transactions_rea_csv htrc group by 1; 2. 조인 후 오류 select buyer_nm , sum(cast(htrc.dis_amt as numeric)) / sum(htrc.tot_amt) as discount_rate from hds_transactions_rea_csv htrc j..

IT_SQL 2021.11.14

[분석실습] 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

Question) case when 절 IN() + like %~% 겹쳐쓰기 불가능?

select case when buyer_nm like '%명품%' then '명품' when buyer_nm like '%캐주얼%' then '의류' when buyer_nm in ('타운모피', '유아동복','피혁A', '피혁B','니트단품','정장셔츠','섬유') then '의류' -- like와 in을 함께쓰고 싶은데... 위 CASE WHEN절에서 첫번째 WHEN -> when buyer_nm like '%캐주얼%' then '의류' 두번째 WHEN -> when buyer_nm in ('타운모피', '유아동복','피혁A', '피혁B','니트단품','정장셔츠','섬유') then '의류' 이 같은 카테고리라, 두개를 합치고 싶은데 한줄에 합쳐쓸 수는 없을까요? case when 칼럼 in ('카..

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