[SQL] JOIN문 실습 정리

2022. 11. 11. 12:00·Development Study/Backend
728x90

1. 고객과 고객의 주문에 관한 데이터를 모두 보이시오

SELECT *
FROM Customer, Orders
WHERE Customer.custid = Orders.custid;

주문했던 고객의 정보에 대해 JOIN하여 출력한 것

+ 만약 SELECT 뒤에 * 대신 KEY값을 직접 입력해서 특정 데이터를 뽑아내려 할 때

    WHERE로 묶어 둔 custid를 쓰고싶다면 묶인 테이블의 둘 중 한 군데를 골라

    ex) Customer.custid / Orders.custid 와 같이 써주면 된다

SELECT Customer.custid, name, bookid, saleprice
FROM Customer, Orders
WHERE Customer.custid = Orders.custid;

++ from 절에서 변수를 선언하듯이 해서 긴 테이블의 이름을 줄여 출력할 수도 있다

     Customer이 a로, Orders가 b로 적용된 예제(결과는 위 사진과 같다)

SELECT a.custid, a.name, b.bookid, b.saleprice
FROM Customer a, Orders b
WHERE a.custid = b.custid;

2. 고객과 고객의 주문에 관한 데이터를 고객번호 순으로 정렬하여 보이시오

(고객번호, 고객명, 도서번호, 구매금액 출력)

SELECT a.custid, a.name, b.bookid, b.saleprice
FROM Customer a, Orders b
WHERE a.custid = b.custid
ORDER BY a.custid DESC;

위에 썼던 구조를 이용하여 custid를 정렬하는 문장까지 쓰면 깔끔하게 정렬된 결과가 나온다


3. 고객의 이름과 고객이 주문한 도서의 판매가격을 검색하시오

SELECT a.name, b.saleprice
FROM Customer a, Orders b
WHERE a.custid = b.custid;

실행 결과


추가문제. 고객별로 주문한 모든 도서의 총 판매액을 구하고, 고객별로 정렬하시오

SELECT a.custid, a.name, SUM(b.saleprice)
FROM Customer a, Orders b
GROUP BY a.custid
ORDER BY a.custid DESC;

총 구매액이 같은걸 보아 공동구매를 한 듯 하다


4. (고객번호, 고객명)별로 주문한 모든 도서의 총 판매액을 구하고, 고객번호별로 정렬하시오

SELECT a.custid, a.name, SUM(b.saleprice) AS cust_tot
FROM Customer a, Orders b
WHERE a.custid = b.custid
GROUP BY a.custid, a.name
ORDER BY a.custid;

굉장히 복잡한 듯 하지만 위에 사용했던 문장들을 잘 조합하여 만들어둔 것이다


5. 가격(book, price)이 20,000원인 도서를 주문한 고객(Orders)의 이름(customer)과 도서의 이름(book)을 구하시오

SELECT a.name AS custname, c.bookname, c.price
FROM Customer a, Orders b, Book c
WHERE a.custid = b.custid
AND b.bookid = c.bookid
AND c.price = 20000;

모든 고객 중 한 명만 이 책을 구매했다


6. 도서를 구매하지 않은 고객의 포함(Customer - Outer Join)하여

    고객의 이름(Customer)과 고객이 주문한 도서의 판매가격(Orders)을 구하시오

SELECT a.custid, a.name, b.saleprice
FROM Customer a LEFT OUTER JOIN Orders b
ON a.custid = b.custid;

생소한 OUTER JOIN이다. 하지만 중요한 개념이므로 알아두면 될 것 같다

SELECT b.custid, b.name, a.saleprice
FROM Orders a RIGHT OUTER JOIN Customer b
ON a.custid = b.custid;

이렇게 위치가 바뀔 경우 LEFT 대신 RIGHT로 써서 작성할 수 있다


 

728x90
저작자표시 비영리 변경금지 (새창열림)

'Development Study > Backend' 카테고리의 다른 글

[SQL] 실습 정리(SUB_QUARY, UPDATE)  (0) 2022.11.19
[SQL] 실습 정리(+JOIN, OUTER_JOIN, CASE, SUBQUARY)  (0) 2022.11.12
[SQL] 연습 문제 ( GROUP BY ~ CREATE )  (0) 2022.10.20
[SQL] 데이터분석의 농경지, CREATE TABLE  (0) 2022.10.20
[SQL] 데이터분석의 꽃, GROUP BY(~HAVING, DESC)  (0) 2022.10.20
'Development Study/Backend' 카테고리의 다른 글
  • [SQL] 실습 정리(SUB_QUARY, UPDATE)
  • [SQL] 실습 정리(+JOIN, OUTER_JOIN, CASE, SUBQUARY)
  • [SQL] 연습 문제 ( GROUP BY ~ CREATE )
  • [SQL] 데이터분석의 농경지, CREATE TABLE
ThreeLight
ThreeLight
ThreeLight Studio의 블로그, TimeMap.exe에 오신 것을 환영합니다.
  • ThreeLight
    TimeMap.exe
    ThreeLight
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • Checkpoint (1)
      • (3D)Dev Deep Dive (0)
        • Templates & Guides (9)
        • Frontend origin (9)
        • Backend origin (1)
        • TroubleShootings (4)
      • Development Study (95)
        • Frontend (36)
        • Backend (21)
        • CS(Computer Science) (2)
        • Background Knowledges (11)
        • Algorithm (2)
        • Mobile (3)
        • AWS (6)
        • Python (6)
        • MSW(MapleStoryWorlds) (8)
      • Coding Test (59)
        • 문제.zip (1)
        • BaekJoon_JavaScript (0)
        • Programmers_JavaScript (9)
        • BaekJoon_Python (23)
        • Programmers_Python (10)
        • Undefined_Python (3)
        • Programmers_SQL (13)
      • 활동내역.zip (43)
        • 개인 (21)
        • Techeer (12)
        • Bootcamp (7)
        • Hackathon (1)
        • TeamProjects (2)
      • 여기 괜찮네??(사이트 | App) (5)
      • 재미있는 주제들 (8)
      • 개발 외 공부 저장소 (11)
        • 생산운영관리 (3)
        • 생활속의금융 (6)
        • 경영정보시스템 (2)
  • 링크

    • TimeMap.dmg (Portfolio)
    • GitHub 바로가기
    • 오픈프로필(카카오톡)
    • Medium 바로가기
    • Disquiet 바로가기
    • LinkedIn 바로가기
  • 인기 글

  • 태그

    CSS
    SQL
    HTML
    프로그래머스
    programmers
    JavaScript
    react
    Baek Joon
    TypeScript
    Python
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
ThreeLight
[SQL] JOIN문 실습 정리
상단으로

티스토리툴바