SQL/SQL 기본 11

SQL 연습(1): 이커머스 데이터 핸들링

※ 프로젝트 개요 더보기 사용한 Skills: SUM, ROLLUP, GROUP BY, ORDER BY, COUNT, CONVERT, NVARCHAR, ORDER TABLE, TOP, 서브쿼리, 인라인 뷰 분석의 어려움: 이상치의 다수 삽입으로 데이터 정제 time >>> 데이터 분석 time 사용한 Data: 패스트캠퍼스 상품 결제 자료 약 20만 건 order: 결제중 / payment: 결제 완료 / Refund: 환불 / Transaction: 확인필요 cancelled: 결제 취소중 / completed / 결제 완료 / requested:PG사에 결제 요청중 Pending: pg사의 결제 대기중 / deleted: 확인필요 transaction_amount 최종 결제 금액 = tax_free_..

SQL/SQL 기본 2023.10.09

SQL 기본(10): 날짜, 집계, 수학 함수

1. GENDATE, SYSDATETIME, DATEADD, DATEDIFF, DATEPART, DATENAME GETDATE() 현재 접속중인 데이터 베이스 서버의 시간을 소수점 3자리 까지 시간을 반환 SYSDATETIME() 현재 접속중인 서버의 시간을 소수점 7자리까지 시간을 반환 UTC: 세계 협정 시간 / GETUTCADATE: 현재 접속중인 서버의 UTC 시간을 소수점 3자리 / SYSUTCDATETIME: 소수점7자리~ DATEADD( datepart, num, date) # 날짜를 더하거나 빼기, year, quarter, day 등 날짜형식 사용 가능 DATEDIFF (datepart, startdate, enddate) # 두 날짜의 차이, 차이가 큰 숫자일 때에는 DATEDIFF_B..

SQL/SQL 기본 2023.10.01

SQL 기본(9): 문자열, NULL 값 관련 함수

1. 결합: Concat -둘 이상의 문자열 값을 엔드 to 엔드 방식으로 연결 / 조인한 결과 문자열 반환 -최소 둘 이상의 문자열 값 인수와 254개 이하의 문자열 값 인수가 필요 / 둘 이상 값 없을 시 오류 발생 -Null 값을 빈 문자열로 암시적 변환 / Null 인수를 받을 시 varchar(1) 형식의 빈 문자열 반환 CONCAT(string_value1 [,string_value2[) SELECT CONCAT ('I', 'Love', 'SQL') 2. 형 변환: CAST, CONVERT CAST(expression AS data_type [(length)]) #data_type: xml, bigint, sql_variant, length: 기본값 30 CONVERT(data_type[(le..

SQL/SQL 기본 2023.09.19

SQL 기본(8): 공통 테이블(CommonTable) AS CTE

1. 공통 테이블 -데이터베이스에 없는 테이블이 필요할 때 사용 -일반 공통 테이블 / 재귀 공통 테이블으로 식 구분 -다음에 나오는 SELECT 문에만 사용 가능 -쿼리 실행 중 메모리에 존재하는 테이블 WITH [CTE_TABLE] AS ( SELECT FROM [TABLE] ) SELECT FROM [CTE_TABLE]; -WITH 문 입력 후 테이블 이름 지정, 사용할 열 지정(열 NAME: AS 다음에 오는 SELECT 문이 반환하는 열) -쿼리문 작성 -CTE에서 정의한 열의 개수와 CTE SELECT 문에서 얻은 열 목록이 다르면 오류 발생 2. 재귀 CTE: 재귀 CTE: CTE 결과를 CTE 내부 쿼리에서 재사용, 계층 데이터 검색할 때 사용, 2개 이상의 쿼리 필요 WITH[CTE_TA..

SQL/SQL 기본 2023.09.13

SQL기본(7): 서브쿼리

1. 서브쿼리 -쿼리 안에 포함된 또 다른 쿼리 -조인하지 않은 상태에서 다른 테이블과 일치하는 행을 찾을 수 있음 -조인 결과를 다시 조인할 때 사용 가능(여러 번 쿼리 수행결과 -> 하나의 중첩된 문장으로 간편 조회) -비교 연산자 서브 쿼리 사용 시 오른쪽 기술, 내부에는 ORDER BY 사용 불가, 여러 개의 서브쿼리 중첩가능 -다중행 연산자 종류: (IN, ANY, EXISTS, ALL) -비교 연산자와 사용 시 결과가 반드시 1건, 결과가 2건 이상일 경운 다중행 연산자 사용 필요 2. 종류: 더보기 단일행 서브쿼리: 서브 쿼리에서 반환되는 결과가 1개 SELECT FROM [TABLE] WHERE = (SELECT FROM [TABLE]) 더보기 다중행 서브쿼리: 서브 쿼리에서 반환되는 결과..

SQL/SQL 기본 2023.08.26

SQL기본(6): JOIN(INNER, OUTER, CROSS)

1. JOIN 데이터 중복을 최소화하며 다른 테이블과 조합으로 데이터 셋을 만들기 위해 사용 2. 종류: INNER JOIN(내부 조인) (LEFT, RIGHT, FULL) OUTER JOIN(모두 출력, 조건에 만족하지 않아도 해당 테이블 관련 출력) CROSS JOIN(조인에 포함된 테이블의 카티션 곱, 조인 조건이 없음) SELF JOIN(같은 테이블을 사용, 계층적 구조를 테이블화에 사용, AS명 반드시 사용, JOIN구문 없음) 1. SELECT FROM INNER JOIN [table2] as T2 on T1.col1 = T2.col1 WHERE = [value] ORDER BY [col] -JOIN ON과 WHERE의 차이: ON은 조인 조건을 위한, WHERE은 조인 완료 후 조건에 맞는 ..

SQL/SQL 기본 2023.08.22

SQL 기본(5): MSSQL 자료형 형변환과 유니코드 필요성

1. 형변환 묵시적 형변환: 조건절의 데이터 타입이 다를 때 우선순위가 높은 타입으로 형이 내부적으로 변환 명시적 형변환: 형 변환 함수를 사용하는 경우 형 변환 우선순위: -정수 타입 > 문자 타입 2. 주요 명령어: DECIMAL(M, N): 최대 문자열 자릿수 M, 소수점 지정 N CONVERT INTO: (변환할 데이터타입, 원하는 열). VARCHAR와 NVARCHAR의 차이: NVARCHAR는 유니코드로 표기하며 용량(바이트)을 기존보다 2배 차지한다. 3. 유니코드 표기법의 중요성: 나라별(언어별) OS가 다르기 때문에 오류없이 불러오고 읽기 위해 필요(균일한 표기법) 테이블 생성: CREATE TABLE doit_implict( NUM INT, COL1 INT, COL2 INT, COL3 ..

SQL/SQL 기본 2023.08.21

SQL 기본(4): 테이블 생성과 제약 조건, 임시 테이블 개념

1. 제약 조건 종류: NOT NULL: NULL값 입력 금지 UNIQUE: 중복된 값 입력 금지 PRIMARY KEY: NOT NULL + UNIQUE FOREIGN KEY: 다른 테이블의 컬럼을 조회해서 무결성 검사 CHECK: 조건으로 설정된 값만 입력 허용 * PRIMARY KEY와 FOREIGN KEY로 지정한 컬럼을 삭제할 수 없음, 자식 테이블 값 입력 불가 / CASCADE 옵션: 삭제O 2. 검색한 결과를 다른 테이블에 입력: INSERT [저장 테이블] SELECT 열 FROM [조회 테이블] #이미 생성되어 잇는 테이블에 입력 SELECT * INTO [저장 테이블] FROM [조회 테이블] # 테이블이 없는 상태에서 테이블 생성 및 결과입력 LOCAL TEMPORARY TABLES,..

SQL/SQL 기본 2023.08.18

SQL 기본(3): ORDER BY, GROUP BY

1. 기본 구문: SELECT FROM [table] WHERE = [value] ORDER BY [col] [ASC, DESC] SELECT TOP N FROM [table] WHERE = [value] ORDER BY [col] [ASC, DESC] #상위 N개 SELECT FROM [table] GROUP BY ORDER BY [col] [ASC, DESC] SELECT FROM [table] WHERE = [value] GROUP BY HAVING [aggfunc] ] = DISTICT 중복 제거, 계산은 시행하지 않음 VS GROUP BY 중복 제거, 계산 시행 특정구간 데이터 검색: OFFSET(몇 번째부터 시작)과 FETCH NEXT(다음 어디서부터)[OFFSET과 함께 사용] -- 기본 문..

SQL/SQL 기본 2023.08.17

SQL 기본(2): 와일드 카드(문법 간 조합 가능)

1. 기본 구문: SELECT FROM [table] WHERE Like '%value' SELECT FROM [table] WHERE Like 'A_C%' / SELECT FROM [table] WHERE Like '__F%' %조건%: 앞 뒤에 어느 문자열이 와도 조건문에 포함된 데이터 반환 _(underscore): 어떤 글자이든 하나의 글자만 허용 #_사용: A_(전체 글자 2개, A로 시작), _A, _A_(세글자 중 가운데) [(text)]: [A,B,C]% 또는 [A-C]%: 첫 글자가 A 또는 B또는 C 시작검색 / %[A,B,C] %[A-C] 마지막 글자가 ~로 끝나는 문자 [^(text)]: ^뒤에 적힌 글자를 제외한 글자들을 허용 #NOT이 아닌 ^사용 [^A]% 첫 번쨰 글자가 A가..

SQL/SQL 기본 2023.08.17