홍카나의 공부방

[DE 데브코스] 05.09 TIL - SQL 본문

Data Engineering/프로그래머스 데브코스

[DE 데브코스] 05.09 TIL - SQL

홍문관카페나무 2023. 5. 9. 14:19

SQL Tips

-- 다수의 SQL 문을 실행한다면 세미콜론으로 분리 필요

SELECT *
FROM Orders;

SELECT id
FROM Items;

-- 테이블/필드이름의 명명규칙을 정하는 것이 중요
-- 단수형 vs 복수형
User vs. Users

-- _ vs. CamelCasing
user_session_channel
UserSessionChannel

DROP TABLE table_name; -- 테이블 삭제
DELETE FROM; -- 조건에 맞는 레코드만 지움

ALTER TABLE table_name ADD COLUMN field_name field_type; -- 새 필드 이름/타입 추가
ALTER TABLE table_name RENAME old_field_name to new_field_name; -- 기존 필드 이름 변경
ALTER TABLE table_name DROP COLUMN field_name; -- 필드 드롭
ALTER TABLE table_name RENAME to new_table_name; -- 새 테이블 이름으로 변경


-- WHERE의 응용

WHERE channel in ("GOOG","TUBE");
WHERE channel LIKE 'G*';
WHERE channel LIKE '*o*';
  • Redshift 등의 데이터 웨어하우스에는 PK 유일성이 보장되지 않음. ( CREATE로 pk field를 지정해도 마찬가지 )
  • ORDER BY의 경우, NULL 값 순서는 오름차순(ASC) 일 때 마지막에, 내림차순(DESC) 일 때 맨 처음에 위치한다.

 

데이터 일을 한다면...

  • 항상 데이터의 품질을 의심하고 체크하는 습관을 들여야 한다.
  • 중복된 레코드를 체크하고
  • 최근 데이터의 존재 여부를 확인하며
  • PK Uniqueness가 지켜지는지 확인하고
  • null 값이 들어있는 컬럼들이 있는지 체크하며
  • 이를 unit test 형태로 만들어 매번 쉽게 체크해 보는 과정을 거치면 되겠다.

 

COUNT 함수 제대로 이해하기

example

  • SELECT COUNT(1) FROM count_test에서 COUNT 함수의 parameter가 NULL이 들어오지 않으면 계속 셈을 한다.
  • SELECT COUNT(NULL) FROM count_test처럼 NULL이 인자로 들어오면 COUNT가 skip이 되어 0을 반환한다.
  • SELECT COUNT(value) FROM count_test는 Null을 제외한 모든 값이 카운트되어 6을 반환할 것이다.
  • DISTINCT는 중복을 제거하여 셈을 하므로, 중복 값과 Null 값을 제외한 4를 반환한다.

 

반응형