2021년 12월 14일 🔆맑음
프롤로그
오늘은 함수와 조인에 대해 배웠습니다.
<숫자함수>
ABS(n) : n의 절대값 반환
EX) ABS(3) → 3, ABS(-3) → 3
CEIL(n) : n과 같거나 가장 큰 정수 반환
EX) CEIL(10.123) → 11, CEIL(10.541) → 11
FLOOR(n) : n보다 작거나 가장 큰 정수 반환
EX) FLOOR(10.123) → 10, FLOOR(10.541) → 10
ROUND(n, i) : n을 소수점 기준 ( i+1 ) 번째에서 반올림한 결과 반환
EX) ROUND(10.154) → 10, ROUND(10.154, 2) → 10.15
<문자함수>
<날짜함수>
<변환함수>
<NULL 관련 함수>
<집계함수>
<내부조인:등가조인>
SELECT *
FROM book b, orders o
WHERE b.bookid = o.bookid;
SELECT *
FROM book b INNER JOIN orders o
ON b.bookid = o.bookid
<셀프조인(SELF JOIN)>
SELECT *
FROM emp A, emp B
WHERE A.mgr = B.empno;
SELECT *
FROM emp A JOIN emp B
ON A.mgr = B.empno;
<크로스조인>
SELECT *
FROM book, orders;
SELECT *
FROM book CROSS JOIN orders;
<외부조인(OUTER JOIN)>
1. LEFT OUTER JOIN
SELECT *
FROM book b, orders o
WHERE book.bookid = orders.bookid(+);
SELECT *
FROM book b LEFT OUTER JOIN orders o
ON b.bookid = o.bookid
SELECT *
FROM book b FULL OUTER JOIN orders o
ON b.bookid = o.bookid
<예제>
1) 할인을 받은 고객의 이름, 할인 받은 누적금액을 조회
SELECT c.name, SUM(b.price - o.saleprice)
FROM customer c, orders o, book b
WHERE c.custid = o.custid
AND b.bookid = o.bookid
AND b.price - o.saleprice > 0
GROUP BY c.name;
2) 주문 일자 기준/ 그날 총 판매금액(saleprice), 주문횟수 조회
SELECT orderdate, SUM(saleprice), COUNT()
FROM orders
GROUP BY orderdate;
3) 고객별 주문한 고객이름, 주문한 횟수, 총 판매금액(saleprice) 조회
SELECT c.name, COUNT(), SUM(saleprice)
FROM customer c, orders o
WHERE c.custid = o.custid
GROUP BY c.name;
4) 키트리서점 책 중 주문이 한번도 없었던 책 이름, 출판사, 가격을 조회
SELECT b.bookname, b.publisher, b.price
FROM book b, orders o
WHERE b.bookid = o.bookid(+)
AND o.orderid is null;