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 | 
													Tags
													
											
												
												- tensorflow
- 해석
- 데이터베이스
- HeidiSQL
- python기초
- 데이터 수집
- 데이터 분석
- sql
- 예측
- keras
- 데이터전처리
- sklearn
- DB
- 회귀모델
- 훈련
- 오라클
- 시각화
- 데이터 가공
- 정확도
- python
- 머신러닝
- Database
- MariaDB
- Deep Learning
- Oracle
- 딥러닝
- pythone
- 데이터
- 파싱 오류
- pandas
													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 | 
 
								 
								 
								