SUBSTR 연습 많이 할 것
신입사원들이 가장 많이 혼동하는 것이 문자를 다루는 함수들에
문자가 아닌 다른 형태를 쓰는 경우가 많다고 한다
특히 분석과 쪽에서는 시계열 자료들을 많이 보려고 하기 때문에
타입을 잘 확인하고 적용해야 한다
EX) 연도별, 일별, 월별 판매금액 등
DATEDIFF(DATE1, DATE2) = DATE2와 DATE1의 날짜 차이를 계산 해준다)
SYSDATE = 시스템상의 날짜를 반환한다
1.REPLACE.1 휴대폰 첫 자리가 000인 경우 010으로 바꿔서 출력하시오
SELECT REPLACE(phone,"000","010")
FROM Customer
1.DATE_FORMAT.2 ORDERDATE를 STRING TYPE의 yyyymmdd로 바꿔보기
SELECT DATE_FORMAT(orderdate,'%Y%m%d')
FROM Orders
1.SUBSTR.3 1.DATE_FORMAT.2문제에서 SUBSTR을 이용하여 년, 월만 나오게 출력하기
SELECT SUBSTR(DATE_FORMAT(orderdate,'%Y-%m-%d'),1,7)
FROM Orders
2.SYSDATE().1 오늘 일자 출력
SELECT SYSDATE()
2.DATE_FORMAT().2 오늘 일자의 날짜 부분만 출력
SELECT DATE_FORMAT(SYSDATE(), '%Y%m%d')
2.DATE_ADD().3 오늘 일자 기준으로 15일 후 날짜를 출력
SELECT DATE_FORMAT(DATE_ADD(SYSDATE(), INTERVAL 15 DAY), '%Y%m%d') AS LATER15
2.DATEDIFF().4 오늘 일자와 ORDERDATE 날짜 차이(일수) 계산
SELECT orderid, DATEDIFF(SYSDATE(), orderdate)
FROM Orders
2.ADDDATE().5 ORDERDATE와 ORDERDATE 15일 후 일자 출력
SELECT orderdate, ADDDATE(orderdate, INTERVAL 15 DAY) AS 15DaysLater
FROM Orders
3.SET(),@SEQ.1 예제: 행 번호
SET @SEQ:=0;
SELECT (@SEQ:=@SEQ+1), custid, name
FROM Customer
WHERE @SEQ < 2;
4.JOIN.2 예제
SELECT A.name, B.bookid, B.saleprice
FROM Customer A, Orders B
WHERE A.custid = B.custid
AND A.name = 'Park JiSung';
4.SCALAR_SUB_QUARY.3 예제이지만 추천은 하지 않는 방식의 JOIN관련 예제
SELECT A.custid,
(SELECT B.name FROM Customer B
WHERE A.custid = B.custid),
A.saleprice
FROM Orders A
4.SCALAR_SUB_QUARY.4 위의 예제 말고 추천하는 방식의 JOIN문
SELECT A.custid, B.name, A.saleprice
FROM Orders A, Customer B
WHERE A.custid = B.custid;
4.INLINE_VIEW.5 종종 쓰이는 INLINE_VIEW 방식의 SQL문, 코딩테스트에서 쓰면 감점될 수 있다
고객 번호가 2 이하인 고객의 판매금액 출력(고객이름과 판매액)
SELECT A.custid, A.name, B.saleprice
FROM (SELECT custid, name
FROM Customer
WHERE custid <= 2) A,
Orders B
WHERE A.custid = B.custid
# 위 처럼 쓰면 저 자체만으로 TABLE A가 된다
4.VIEW.6 종종 쓰이는 VIEW 방식으로, 테이블이 아니라, 항상 join해야 하는 부분의 값을 저장시켜두고 미리 구동시킨 다음 테이블처럼 볼 수 있도록 만들어두는 기능을 가진 SQL문
실질적으로 존재하지는 않지만 종종 사용한다
주문번호, 고객번호, 고객이름, 도서번호, 도서이름, 판매금액
VIEW는 V로 시작하는 이름을 가지게 설정한다
이제 방법을 알았으니 요긴하게 쓰면 된다
CREATE VIEW V_Orders
AS
SELECT A.orderid, A.custid, B.name, A.bookid, C.bookname, A.saleprice
FROM Orders A, Customer B, Book C
WHERE A.custid = B.custid
AND A.bookid = C.bookid;
'Development Study > Backend' 카테고리의 다른 글
[SQL] 실습 + 빅데이터 분석 방법들 (0) | 2022.12.10 |
---|---|
[SQL] 실습 정리 (0) | 2022.12.03 |
[SQL] 실습 정리(SUB_QUARY, UPDATE) (0) | 2022.11.19 |
[SQL] 실습 정리(+JOIN, OUTER_JOIN, CASE, SUBQUARY) (0) | 2022.11.12 |
[SQL] JOIN문 실습 정리 (0) | 2022.11.11 |