SQL 배우기
-
[SQL] Self join 셀프조인 완벽 이해하기SQL 배우기 2023. 11. 24. 19:09
조인(JOIN)은 A테이블에는 c라는 데이터가 없지만, B테이블에는 c라는 데이터가 존재하여 B에서 c라는 정보를 가져올 때, 주로 사용합니다. 하지만 A 테이블에 c라는 정보가 있지만, 직접적인 관계는 아니라서 바로 사용을 할 수 없다면? 즉, 같은 테이블에 정보는 충분한데 그게 열로써 나타나있지 않아서 다른 행에서 불러와야할 때! 즉, 한 테이블에 존재하는 컬럼(column) 사이에 관계가 존재할 때 → 그럴 때 사용하는 것이 바로 셀프 조인(Self-join) 입니다! 셀프 조인은 하나의 테이블이지만 복사를 하여 역할을 다르게 부여하는 개념이기 때문에 무조건 별칭을 부여해서 어떤 테이블인지, 어떤 테이블에서 불러온 컬럼인지를 명시해주어야합니다. 간단한 예제로, 셀프 조인을 이해해봅니다! employ..
-
[SQL] SQL 명령 특성에 따른 구분 DDL DML DCLSQL 배우기 2023. 11. 24. 11:24
SQL 정의 : Structured Query Language의 줄임말로, 관계형 데이터베이스에 데이터를 저장하고 관리하고 처리하기 위한 언어 : ANSI SQL 이 표준이지만, 여러 DBMS 프로그램에서 ANSI SQL을 기반으로 자체적인 SQL을 개발하여 사용하면서 조금씩 차이가 있기도 함 SQL 명령 특성에 따른 구분 1. DDL (Data Definition Language, 데이터 정의 언어) - 각 Relation(=Database Table)을 정의하기 위해 사용하는 언어 - CREATE, ALTER, DROP 2. DML (Data Manipulation Language, 데이터 조작 언어) - 데이터 관리를 위해 사용하는 언어 - SELECT, INSERT, UPDATE, DELETE ..
-
[HIVE SQL] 코딩테스트 준비 2SQL 배우기 2023. 5. 21. 08:48
- 행을 집약해서 쉼표로 구분된 문자열 변환하기 (최종 출력에서 데이터를 열로 전개해야 가독성이 높은 경우가 많음, 직감적으로 이해가능) collect_list를 사용해서 하나로 묶고 concat_ws를 사용해서 구분자로 구분하기 concat_ws(',', collect_list(product_id)) - 가로 기반 데이터를 세로 기반으로 변환하기 (p110) 우선 가로 기반 데이터의 수가 고정되어 있으면, 즉 행으로 전개할 데이터의 수가 고정되었다면, 데이터 수와 같은 수의 일련 번호를 가진 피벗 테이블을 만들고 CROSS JOIN 하기 select q.year , case when p.idx = 1 then 'q1' when p.idx = 2 then 'q2' when p.idx = 3 then 'q..
-
[HIVE SQL] 코딩테스트 준비 1SQL 배우기 2023. 5. 20. 11:26
- 사칙 연산시 NULL값 주의하기 - 또는 비율을 계산할 때, 정수로 나누거나 0으로 나누는 등의 실수를 할 수 있다. NULL은 문자와 결합해도, 숫자와 사칙연산을 해도 NULL이 된다. 따라서 원하는 결과 형태에 따라 처리 후 가공해야 한다. 예를 들면, (금액 - 할인금액) = 만 원-NULL = NULL 이러면 안되는 거잖아! 따라서 만 원 - COALESCE(할인금액, 0) = 만 원 이렇게 처리해야 한다. 또는 NULLIF 를 사용한다. 계산한 값이 소수점을 포함하려면 100.0 * 컬럼 이런 식으로 사용하자 - SIGN 함수는 매개변수가 양수면 1, 0이라면 0, 음수라면 -1을 리턴한다. 평균을 낼 때, NULL값을 같이 카운트할지, 빼고 카운트할지에 따라 활용하면 된다. - 거리 계산 ..
-
[HIVE SQL] 내장함수(Bulit-in Function) 확인하기 + 파이썬은 덤SQL 배우기 2023. 3. 27. 22:36
내장함수란 말 그대로 이미 내장된 함수를 의미합니다. 데이터베이스 관리자가 자주 사용되는 함수를 만들어놓은 것이기 때문에 알고 있으면 빠르고 편하게 사용할 수 있습니다. [Hive 에서 Built-in 함수 확인하기] SHOW FUNCTIONS; -- 함수, 테이블, 데이터베이스의 목록 확인 DESCRIBE FUNCTION weekofyear; tab_name : weekofyear(date) - Returns the week of the year of the given date. A week is considered to start on a Monday and week 1 is the first week with >3 days. DESCRIBE FUNCTION EXTENDED weekofyear; Py..
-
행과 행의 관계를 쉽게 계산해주는 윈도우 함수 Window Function [SQL]SQL 배우기 2023. 3. 18. 13:18
Window Function 행과 행 간의 관계를 쉽게 정의하기 위해 만든 함수 (예, 그룹 내 순위, 집계, 순서, 비율) - 그룹 내 순위 관련 함수 : RANK, DENSE_RANK, ROW_NUMBER - 그룹 내 집계 관련 함수 : SUM, MAX, MIN, AVG, COUNT - 그룹 내 행 순서 관련 함수 : FIRST_VALUE, LST_VALUE, LAG, LEAD - 그룹 내 비율 관련 함수 : CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT 특징 - 윈도우 함수에는 OVER 문구가 필수로 포함된다. window_function (arguments) over(partition by 컬럼 order by 컬럼) - window_function 뒤에, ..
-
Array 관련된 기본적인 함수 익히기 Hive sqlSQL 배우기 2023. 3. 4. 00:04
Array 기본 함수 요약 1 ARRAY(A_col, B_col, C_col) 같은 행의 값들을 모아서 하나의 배열로 만들기 2 COLLECT_LIST( A_col ) 해당 그룹에 속하는 A_col 속성값을 전부 가져와서 배열로 만들기 (group by 필요) 3 COLLECT_SET( A_col ) 해당 그룹에 속하는 A_col 속성값을 중복 제거하여 배열로 만들기 (group by 필요) 4 CONCAT_WS( '구분자', Array) Array를 구분자로 구분된 String의 형태로 만들기 5 SORT_ARRAY(Array) 배열 정렬하기 (내림차순, 오름차순 확인하기 ) 6 ARRAY_CONTAINS (Array, '찾고자하는 단어') 배열에서 포함하는 단어 찾기 (있으면 1 반환, 없으면 0 반..
-
이것만 보면 날짜시간 형변환 완벽이해! hive sqlSQL 배우기 2023. 2. 14. 13:34
데이터 분석을 하다보면 시계열로 볼 일도 많고 시간차이 계산이나 다양한 형태로 변환할 일도 많습니다! 저는 매번 구글링을 해서 활용하는데, 언젠가부터 이렇게 자주 쓸거면 확실하게 알고 가야겠다는 생각이 들더라구요! 그래서 "날짜시간 함수 완벽 정리" 시간을 가져보겠습니다. 단순하게 생각하면, 날짜시간 형태는 3가지 타입인 것 같습니다. String , UnixTime, 찐 날짜시간타입(date, timestamp 이 있고 year, hour 등의 함수를 사용할 수 있음 ) Input Output Data Type '20230214130405' '20230214130405' string unix_timestamp('20230214130405', 'yyyyMMddHHmmss') 1676379845 bigin..