Notice
Recent Posts
Recent Comments
Link
160x600
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 머신러닝
- 예측
- 데이터
- sklearn
- sql
- pandas
- 데이터 가공
- Oracle
- 정확도
- 회귀모델
- 오라클
- Deep Learning
- 딥러닝
- 훈련
- 데이터전처리
- Database
- tensorflow
- DB
- 시각화
- HeidiSQL
- MariaDB
- python
- 파싱 오류
- 데이터베이스
- 데이터 수집
- pythone
- 데이터 분석
- 해석
- keras
- python기초
Archives
- Today
- Total
코딩헤딩
MariaDB 데이터베이스[database, DB] InLine View 본문
728x90
[ InLine View ]
- From절 뒤에 테이블대신에 SubQury를 사용함
- 행렬의 데이터를 테이블과 동일한 개념으로 사용하기 때문에 가상테이블이라고 칭한다
- 가상테이블은 별칭을 이용해서 테이블 이름처럼 사용한다.
- 보통 테이블 별칭은 대문자 컬럼은 소문자
- 가상테이블 개념이 적용됨
- FROM 절에 서브쿼리를 사용하면 특정 조건식을 갖는 SELECT 문을 테이블처럼 사용할 수 있다.
한마디로 SELECT 절에서 나온 결과를 FROM 절에서 하나의 테이블처럼 사용하고 싶을 때 사용한다.
예제로 알아보겠다.
* 주문내역이 있는 회원별로 지금까지 총 지출한 총액 조회하기
조회컬럼 : 회원아이디, 회원이름, 총 지출액
SELECT mem_id, mem_name, sum(cart_qty * prod_sale) AS total
FROM member
INNER JOIN cart
ON(mem_id = cart_member)
INNER JOIN prod
ON(cart_prod = prod_id)
GROUP BY mem_id, mem_name
ORDER BY total DESC;

총 19개의 값이 나온다.
* 위 결과에서 가장 지출이 가장 큰 값과, 가장 작은 값 조회하기
조회값 : 최댓값, 최솟값
SELECT MAX(A.total) AS total_max, MIN(A.total) AS total_min
FROM (SELECT mem_id, mem_name, sum(cart_qty * prod_sale) AS total
FROM member
INNER JOIN cart
ON(mem_id = cart_member)
INNER JOIN prod
ON(cart_prod = prod_id)
GROUP BY mem_id, mem_name
ORDER BY total DESC) A;

여기서 InLine View를 사용한다.
앞서 만들었던 회원별 지출 총액을 하나의 테이블처럼 사용해서 그 테이블 내에서 max() 함수와 min() 함수를 사용해서
최댓값과 최솟값을 뽑아낸다.
* 위에 결과에서 최댓값을 가지는 회원아이디와 이름 조회하기
SELECT AA.mem_id, AA.mem_name, AA.total
FROM(SELECT mem_id, mem_name, sum(cart_qty * prod_sale) AS total
FROM member
INNER JOIN cart
ON(mem_id = cart_member)
INNER JOIN prod
ON(cart_prod = prod_id)
GROUP BY mem_id, mem_name
ORDER BY total DESC) AA,
(SELECT MAX(A.total) AS total_max, MIN(A.total) AS total_min
FROM (SELECT mem_id, mem_name, sum(cart_qty * prod_sale) AS total
FROM member
INNER JOIN cart
ON(mem_id = cart_member)
INNER JOIN prod
ON(cart_prod = prod_id)
GROUP BY mem_id, mem_name
ORDER BY total DESC) A) BB
WHERE AA.total = BB.total_max;

앞서 구했던 total의 값이 mem_id와 mem_name과 연결되어있지 않기 때문에 이 둘의 값을 연결해 주는 과정이다.
InLine View를 사용하는 이유
기존 단일 쿼리로는 '테이블에서 최대 / 최소 지출' 까지만 알 수 있었다면,
서브쿼리를 통해서 누가 최대 지출을 했는지 확인할 수 있다.
728x90
'데이터베이스' 카테고리의 다른 글
MariaDB 데이터베이스[database, DB] EXISTS() / 수정하기 (2) | 2023.11.26 |
---|---|
MariaDB 데이터베이스[database, DB] 아우터조인(Outer Join) / 셀프조인(Self Join) (0) | 2023.11.25 |
MariaDB 데이터베이스[database, DB] 조인(Join) (1) | 2023.11.23 |
MariaDB 데이터베이스[database, DB] 그룹함수 (3) | 2023.11.22 |
MariaDB 데이터베이스[database, DB] 함수 (4) | 2023.11.22 |