본문 바로가기

수업/수업정리

2024-03-13-오후:DDL실습5

-- 1. 상품 테이블에서 전체 상품 가격의 합을 조회
SELECT
	SUM(g.g_price) AS '전체 상품 가격이 합'
FROM
	tb_goods AS g;
	
-- 2. 상품 테이블에서 판매자 별 판매 상품 가격 합계와 판매자 아이디 조회
SELECT
	g.g_seller_id AS '판매자 ID',
	SUM(g.g_price) AS '판매 상품 가격 합계'
FROM
	tb_goods AS g
GROUP BY g.g_seller_id;

-- 3. 판매자 별 취급 상품 가격 합계가 300만원보다 많은 판매자의 아이디, 금액  조회
SELECT
	g.g_seller_id AS '판매자 ID',
	SUM(g.g_price) AS '금액'
FROM
	tb_goods AS g
GROUP BY g.g_seller_id
HAVING SUM(g.g_price) >= 3000000;

-- 4. 주문 테이블에서 최대 구매 수량, 최소 구매 수량, 총 구매 수량 조회
SELECT
	MAX(o.o_amount) AS '최대 구매 수량',
	MIN(o.o_amount) AS '최소 구매 수량',
	SUM(o.o_amount) AS '총 구매 수량'
FROM	
 tb_order AS o;

1번 결과창
2번 결과창
3번 결과창
4번 결과창

/*
1) WINDOW 함수
함수(칼럼_이름) OVER(PARTITION BY 칼럼_이름)
-함수 : 집계 함수, 순위 함수
-PARTITION BY : GROUP BY랑 비슷함(그룹으로 칼럼 작성)
*/

-- 1) WINDOW 함수
SELECT
	c.CountryCode,
	MAX(c.Population)
FROM
	city AS c
GROUP BY c.CountryCode;


SELECT
	c.CountryCode,
	c.Population,
	MAX(c.Population) OVER(PARTITION BY c.CountryCode) AS 'max_pop'
FROM
	city AS c;

/*
2) 순위 함수
-RANK : 중복 값에 대해 동일 순위로 표시
-DENSE RANK : 중복 가능, 공동 순위가 있더라도 순차적 순위 표시
-ROW NUMBER : 중복이 없는 순위를 표시
*/
SELECT 
	c.Name,
	ROW_NUMBER() OVER(PARTITION BY c.Population) AS 'ROW_NUMBER',
	RANK() OVER(ORDER BY c.Population) AS 'RANK',
	DENSE_RANK() OVER(ORDER BY c.Population) AS 'DENSE_RANK'
FROM
	city AS c
WHERE
	c.CountryCode = 'kor';