목록SQL (2)
R+7
Today I Learned파일 시스템의 한계와 초기 데이터베이스DB가 없던 1950년대 후반에서 1960년대 초반의 파일 시스템은 어땠을까. 이 때는 데이터를 HDD 같은 물리적 저장 장치에 파일 형태로 저장했다. 예를 들어 회사를 가정했을 때, 고객이 늘어나면 고객과 관련된 파일을 만들고 고객 정보를 테이블에 기입한다. 뭔가 무식해보이는 방법인데, 실제로 데이터가 늘어나면 (당연히) 문제가 생겼다. 일반적인 이상현상이라 불리는 4대 핵심 문제(중복 저장 문제, 데이터 불일치 문제, 검색의 비효율성(당시에는 선형 탐색만 존재했다), 동시 수정 문제)가 발생했고, 이에 아예 데이터를 저장하는 방식을 새로 설계해야 한다는 흐름이 등장했다. 이 때 IBM의 주도 하에 계층형 DB가 등장한다. 회사 조직도와 ..
Today I Learned윈도우 함수행과 행 간 관계를 정의해 결과 집합을 계산하는 SQL 함수. 일반적인 집계 함수(SUM, AVG)가 GROUP BY를 통해 그룹으로 묶고 행 수를 줄인다면, 윈도우 함수는 기존 행의 형태와 개수를 유지하면서 주변 데이터를 참조해 계산 결과를 추가한다. 윈도우 함수를 이용해 복잡한 SQL 쿼리를 단순화할 수 있다. 예를 들어 일반적으로 '전체 대비 비율'이나 '누적합'을 구하려면 서브쿼리, 셀프 조인을 작성하지만 가독성이 떨어지고 쿼리도 길어지는데, 윈도우 함수를 사용하면 간단히 해결이 가능한 사례가 많다.OVER 절을 필수 동반한다. 이를 쓰면 지금부터 윈도우 함수를 쓰겠다고 선포하는 것과 마찬가지.SELECT 윈도우함수 OVER ( [PARTITION BY ..