데이터 분석

mysql-3

강청색 2023. 12. 14. 17:03

서브쿼리

 

서브쿼리는 쿼리문 안에 또 다른 쿼리문이 포함된 구문

-- 리턴하는 행과 열의 개수에 따라 분류할 수 있다.

-> 단일행 서브쿼리 : 하나의 스칼라 값을 반환

-> 다중행 서브쿼리 : 여러 개의 row을 반환

-> 다중행 열 서브쿼리 : 여러 개의 column로 구성된 여러 가의 row 테이블을 반환

 

서브쿼리의 확장성

- select 기본 질의는 아주 짧은 단문만 가능하지만 여러 단계 질문을 한꺼번에 하는 경우가 많다.

SQL 복잡 질의를 수행하는 방법이 바로 서브쿼리이다.

 

서브쿼리는 WHERE절 안에서도 사용할 수 있다.

 

예시)

- 제품이름이 'A' 인 제품의 최대 판매가는?

SELECT MAX(price) AS 최대판매가
FROM products
WHERE product_name = 'A';

 

서브쿼리를 실행, 평균 가격을 산출

메인 쿼리를 실행, 평균 가격 이상인 데이터만 가져와서 표시

select *

from product_info

where price >= (select avg(price) from product_info);

 

상관 부속질의

-- 상위 부속질의의 투플을 이용해 하위 부속질의 계산 즉, 상휘 부속질의와 하위 부속질의가 독립적이지 않고 서로 관련을 맺음

 

INLINE VIEW

 

-- FROM 절에서 서브쿼리 사용하기

FROM절 안에 쓴 서브 쿼리의 결과는 뷰처럼 취급

인라인 뷰(inline view) 라고도 한다

 

단계

-- 서브 쿼리 실행

-- 

 

GROUP BY

집계 함수 내용 사용 예
SUM([ALL | DISTINCT ] expr) expr의 합계를 반환 SUM(price)
AVG([ALL|DISTINCT]expr) expr의 평균을 반환 AVG(price)
COUNT({[[ALL|DISTINCT|]expr)|*}) expr의 row 개수 반환 COUNT(*)
MAX([ALL|DISTINCT]expr) expr의 최대값을 반환 MAX(price)
MIN([ALL|DISTINCT]expr) expr의 최소값을 반환 MIN(price)
AVG(expr) expr의 평균값을 반환  
STDEV(expr) expr의 표준편차를 구함  
VAR_SAMP(expr) expr의 분산을 구함  

 

집계 함수 COUNT()

-- *를 사용하면 null을 포함한 총 Row 개수를 구하며, 필드를 명시한 경우, null 값을 제외함

SELECT COUNT(*), COUNT(price)

FROM Orders;

 

집계 함수 AVG()

-- 평균 구매 가격조회

SELECT AVG(saleprice)

FROM Orders;

-- null 값이 있는 경우 IFNULL, COALEACE 함수와 조합

SELECT COUNT(*), SUM(salary), AVG(IFNULL(salary,0))

FROM Orders;

 

집계함수 sum()

-- AS 키워드로 열 이름을 지시

SELECT SUM(saleprice) AS 총매출

FROM Orders;

 

복합 집계 함수 sum, avg, min, max

-- 고객이 주문한 도서의 총 판매액을 구하시오

SELECT SUM(saleprice) AS 총매출

FROM Orders

WHERE custid=102;

 

GROUP BY 절 사용

-- 지정한 열의 같은 데이터 행을 하나로 묶음

SELECT custid COUNT(*) AS '도서수'.

SUM(saleprice) AS '판매금액'

FROM Orders

GROUP BY custid;

 

HAVING 절

-- GROUP BY에 선택한 컬럼의 조건을 HAVING 절에 지시함

-- 서브쿼리 실행, 열의 평균 값을 산출함

-- 메인쿼리를 실행
    code 열을 기준으로 그룹화하고, price 열의 그룹 최저값이 서브 쿼리의 결과보다 작은 데이터만 가져와 표시

 

사용시 주의 사항

-- GROUP BY로 컬럼을 그룹으로 묶은 후 SELECT 절엔 반드시 GROUP BY에서 사용한 컬럼과 집계함수만 나올 수 있음

1) 절은 반드시 GROUP BY 절과 같이 작성해야하고

2) WHERE 절보다 뒤에 나와야 함

3) 검색조건에는 SUM, AVG, MAX, MIN, COUNT와 같은 집계함수가 와야함

 

배우는 중인데 아직 잘 모르겠다

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

mysql6  (1) 2023.12.20
mysql5  (0) 2023.12.19
mysql4  (2) 2023.12.18
mysql 개념2  (0) 2023.12.13
mysql 개념  (0) 2023.12.13