📌 학습주제 1. 테이블을 집합으로 생각하기 2. *, % 사용 지양하기 3. 데이터 타입 확인하기 4. JOIN 시 유의할 점 5. 가독성 높이기 현업에서 실제 서비스에 사용하는 데이터는 규모가 매우 크기 때문에 기본적인 원칙을 지키지 않으면 여러 DB 문제를 일으킨다. 1. 테이블을 집합으로 생각하기 테이블은 일반적으로 집합 개념에 대응된다. 집합 내 다양한 원소들이 존재하고, 각 원소들의 특징은 컬럼값으로 구분할 수 있다. 원칙1. WHERE 구문 필터링을 통해 최대한 작게 만들어 놓고 JOIN 하기 : 필터링이 가능할 때 최대한 먼저 필터링 하여 집합의 크기를 줄여준 후에 다른 테이블과 JOIN하는 것이 좋다. -- 느린 코드 (MySQL 8에서 실행가능) WITH manager AS( SELEC..
데이터 분석 Data Analytics
📌 학습주제 1. 데이터타입 - 숫자 2. 데이터타입 - 문자 3. 데이터타입 - 이진 4. 데이터타입 - 배열 5. 데이터타입 - 구조체 데이터 타입 (1) - 숫자 BIT(M) : 0과 1로만 구성된 것으로 컴퓨터가 데이터를 저장하는 가장 기본 단위이다. - M : 비트의 자릿수 (1
📌 학습주제 1. 데이터 타입 변환 2. 조건절 - IF, IFNULL, CASE WHEN 3. 그 외 함수 데이터 타입 변환 - 같은 의미의 데이터라도 서로 다른 조직에서 데이터를 관리하는 경우, 데이터 타입 불일치 문제가 발생할 수 있다. - 데이터 타입 불일치로 인한 연산/비교 오류를 피하기 위해 데이터 타입을 변환한다. - 다양한 데이터 소스 간의 호환성을 유지하기 위해 데이터 타입을 변환한다. 1) CAST() 함수 -- 문자열 -> 정수 SELECT CAST('20231014' AS SIGNED INTEGER) AS int_date -- 정수로 변환했기 때문에 연산이 가능하다 SELECT CAST(date AS SIGNED INTEGER) + 3 AS int_date FROM orders 2...
📌 학습주제 1. 날짜/시간 데이터 타입 2. TIMESTAMP 함수 - 현재시간 표현 3. TIMESTAMP 함수 - 날짜 형식화 4. TIMESTAMP 함수 - 날짜 연산 SQL에서 날짜/시간을 나타내는 데이터 타입 1. STRING : 'yyyy-mm-dd', 'yyyy-mm-dd HH:MM:SS' - 가장 단순하게 날짜/시간 데이터를 저장할 수 있는 방식으로, 형식에 제약이 없다. - 시간 관련 함수들을 사용할 수 없다. (시간 관련 함수를 사용하기 위해서는 다른 데이터 타입으로 변경해야 함) 2. DATE : yyyy-mm-dd - 연/월/일 정보만을 저장하는 방식 (시간 단위는 저장하지 않는다.) - DATETIME, TIMESTAMP 타입과 비교했을 때 저장공간을 덜 차지한다는 장점이 있다...
📌 학습주제 1. JOIN - INNER JOIN/LEFT JOIN/RIGHT JOIN/FULL OUTER JOIN/CROSS JOIN 2. UNION - UNION/UNION ALL 3. WITH 4. Subquery JOINS : 특정 key(고유한 값으로 이루어진 컬럼)를 기준으로 2개 이상의 테이블을 결합하는 표현 Q. 테이블을 쪼개놓는 이유는? A1. 테이블에 변경사항이 생겼을 경우 관리가 용이하다. 공유하고 있는 컬럼을 갖고 있는 A와 B테이블이 있다고 가정하자. 만약 A테이블의 해당 컬럼에 변경사항이 생겼을 경우, 매번 B테이블의 해당 컬럼도 같이 변경해주어야 하는 번거로움이 발생한다. 즉, 테이블을 쪼개두면, A테이블만 변경하고 JOIN을 활용해서 B테이블에도 최신화된 데이터를 불러올 수 ..
📌 학습 주제 1. 데이터 조회 구문 : SELET/FROM/WHERE 2. SQL 연산자 : 비교연산자/논리연산자 3. SQL 함수 : 정렬함수/집계함수/문자열함수/숫자함수 4. DDL/DML 데이터 조회 : SELECT, FROM, WHERE SQL문 = SQL 쿼리 (** 쿼리 : 질의하다.) SELECT 컬럼명 : 무엇을 가져올 지 지정해주는 표현 - 여러 개의 컬럼을 가져오고 싶을 때 콤마(,) 을 활용해서 구분해준다. 컬럼은 쿼리를 작성한 순서대로 결과에 나타난다. - 모든 컬럼을 가져오고 싶을 때, * 을 사용하면 된다. ※ 단, 행과 열 많아 테이블의 규모가 크다면, *을 사용할 경우 불필요하게 많은 리소스를 사용할 수 있으므로 주의하자! 따라서 실무에서는 *을 사용하기 전에 테이블 스키마..
결측치(Missing Value) : 0이 아닌 값 언어별로 다르게 부르는데, - NA(Not Available) : 유효하지 않음 - NaN(Not a Number) : 숫자가 아님 - Null : 아무것도 존재하지 않음 ※ 주의해야 할 점은, 결측치는 0이 아니기 때문에 0과는 달리 이 값이 무엇일지 예측할 수 없다는 것이다. 결측치는 왜 생기는 것일까? - 실제로 값 혹은 응답을 입력하지 않아서 - 데이터의 오류로 인해서 결측치를 처리해야 하는 이유 - 결측치로 인해 데이터의 손실이 발생할 수 있음 - 결측치를 어떻게 대체하느냐에 따라서 데이터의 편향이 생길 수 있음 - 데이터 분석가가 결측치를 어떻게 처리하는지에 따라 분석 결과가 달라질 수 있음 결측치 처리 방법 1. 평균으로 대체하는 방법 - ..