데이터 분석

mysql5

강청색 2023. 12. 19. 17:58

집계 이해하기

 

뷰(view)

-- 하나 이상의 테이블을 결합해 만든 가상의 테이블

-- SELECT와 조건 구문 등을 통해 쿼리로서 가상의 테이블로 생성한다.

 

뷰의 특징

-- 원본 테이블 레코드 값에 따라 뷰 레코드도 같이 변화가 일어남

-- 기존 테이블 변경없이 새로운 데이터 구조 사용 가능

-- 특정 레코드에 대한 노출이 필요한 경우 장점

 

뷰의 단점

-- 뷰에 독립적인 인덱스 생성이 어려움

-- 한번 생성된 뷰의 속성 변경이 안됨

ALTER VIEW문을 사용할 수 없다

즉, 뷰의 정의를 변경할 수 없다

-- 삽입, 삭제 갱신 연산에 많은 제약이 따름

테이블 기본키를 포함한 속성 뷰에서 삽입, 삭제, 갱신이 가능

 

뷰의 장점

-- 편리성 및 재사용성

-- 보안

-- 논리적 독립성

 

뷰의 편리함

테이블에서 집계함수, 다중조건을 사용하는 SQL 질의를 사용할 때

예) CREATE VIEW 구문 사용

CREATE VIEW v_orders

AS SELECT ordered, O.custid, username, O.bookid, saleprice, orderdate

FROM customer C, Orders O, Book B

WHERE C.custid = O.custid and B.bookid = O.bookid;

 

CREATE VIEW 구문

CREATE VIEW view_name[(column_list)]

AS SELECT 구문

[WITH[CASCADED | LOCAL] CHECK OPTION] 

 

-- SELECT 구문

--> JOIN, SUBQUERY 및 제약사항을 포함한 쿼리

 

CREATE OF REPLACE VIEW 구문

CREATE OR REPLACE VIEW view_name[(column_list)]

AS SELECT 구문

[WITH[CASCADED | LOCAL] CHECK OPTION] 

-- CREATE 구문으로 view_name에 따라서 새로운 뷰로 생성된다.

 

DROP VIEW 구분

-- CREATE 구문으로 view_name에 따라서 새로운 뷰로 생성된다

DROP VIEW view_name

 

집계함수

내장함수 설명
ABS(숫자) 숫자 절대값 출력
CEILING(숫자) 숫자보다 크거나 같은 최소 정수 값
FLOOR(숫자) 숫자 값 보다 작은 정수 중 가장 큰수
-> 실수는 무조건 버림, 음수일 경우는 제외
ROUND(숫자, 자릿수) 숫자를 소수점 이하 자릿수에서 반올림(자릿수는 양수, 0, 음수)
GREATEST(숫자1, 숫자2...) 주어진 수 중 제일 큰 수 리턴
LEAST(숫자1, 숫자2...) 주어진 수 중 제일 작은 수 리턴

 

예시

mysql>SELECT CEILING(30,75); >> 31

 

기간 집계 함수

기간 함수 설명
DAYOFYEAR(날짜) 일년을 기준으로 날짜까지의 날짜 수
DAYOFWEEK(날짜) 요일(1: 일 ~ 7:토) 반환
WEEKOFYEAR(날짜) 날짜의 주 수(0~53)를 반환한다. WEEK(date,3)호환
YEARWEEK(날짜[,mode]) 월의 영문(January ~ December) 반환
WEEK(날짜[,mode]) 일년 중 몇 번째 주
QUATER(날짜) 날짜가 4분기 중에서 몇 분기인지 반환
DATE_FORMAT(날짜,format) dt 속성을 날짜형식 format으로 반환

 

mode 값

mysql > SELECT WEEKOFYEAR('2021-01-01'); -- 2020년의 53주

53

 

VIEW와 집계함수

-- 반복적, 지속적, 주기적 쿼리를 VIEW로 생성해서 단순한 SELECT로 만들어 집계 결과를 얻고자함

예시)

주별로 판매액의 최소, 최대 값을 알아보자

CREATE OF REPLACE VIEW v_Weekly(Weekly, Date, MIN, MAX)

AS SELECT YEARWEEK(orderdate) Weekly, orderdate 'Date'.

MIN(saleprice) MIN, MAX(saleprice) MAX

FROM Orders

GROUP BY YEARWEEK(orderdate);

 

'데이터 분석' 카테고리의 다른 글

파이썬에서 표만 크롤링 하는 법  (0) 2024.02.22
mysql6  (1) 2023.12.20
mysql4  (2) 2023.12.18
mysql-3  (0) 2023.12.14
mysql 개념2  (0) 2023.12.13