몸과 마음이 건전한 SW 개발자

프로그래머스 Lv. 2 성분으로 구분한 아이스크림 총 주문량 SQL 본문

SQL

프로그래머스 Lv. 2 성분으로 구분한 아이스크림 총 주문량 SQL

스위태니 2024. 1. 2. 11:51

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/133026

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

정답 코드

SELECT
    B.INGREDIENT_TYPE,
    SUM(A.TOTAL_ORDER) AS TOTAL_ORDER
FROM FIRST_HALF AS A
LEFT JOIN ICECREAM_INFO AS B
ON A.FLAVOR = B.FLAVOR
GROUP BY B.INGREDIENT_TYPE
ORDER BY TOTAL_ORDER;

Key Point

JOIN 구문 설명과 차이

SQL에서 JOIN은 여러 테이블의 데이터를 관계에 따라 결합할 때 사용되는 중요한 연산입니다. 각 JOIN 유형은 다른 방식으로 테이블을 결합합니다. 주요 JOIN 유형에는 INNER JOIN, LEFT (OUTER) JOIN, RIGHT (OUTER) JOIN, 그리고 FULL (OUTER) JOIN이 있습니다.

1. INNER JOIN:

  • 설명: 두 테이블 간의 일치하는 데이터만 반환합니다. 즉, 양쪽 테이블에 모두 존재하는 행만 결과로 나타납니다.
  • 차이: 다른 JOIN 유형과 비교했을 때, INNER JOIN은 더 엄격한 일치 조건을 가지며, 일치하지 않는 행은 결과에 포함되지 않습니다.

2. LEFT (OUTER) JOIN:

  • 설명: 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환합니다. 오른쪽 테이블에 일치하는 행이 없는 경우, 결과는 왼쪽 테이블의 데이터와 함께 NULL 값을 포함합니다.
  • 차이: LEFT JOIN은 왼쪽 테이블을 기준으로 합니다. 왼쪽 테이블에 있는 데이터는 항상 결과에 포함되지만, 오른쪽 테이블에 있는 데이터는 일치하는 경우에만 포함됩니다.

3. RIGHT (OUTER) JOIN:

  • 설명: 오른쪽 테이블의 모든 행과 왼쪽 테이블의 일치하는 행을 반환합니다. 왼쪽 테이블에 일치하는 행이 없는 경우, 결과는 오른쪽 테이블의 데이터와 함께 NULL 값을 포함합니다.
  • 차이: RIGHT JOIN은 오른쪽 테이블을 기준으로 합니다. 오른쪽 테이블에 있는 데이터는 항상 결과에 포함되지만, 왼쪽 테이블에 있는 데이터는 일치하는 경우에만 포함됩니다.

4. FULL (OUTER) JOIN:

  • 설명: 두 테이블의 모든 행을 반환합니다. 일치하는 행이 없는 경우, 해당 쪽의 결과는 NULL로 채워집니다. (모든 데이터베이스 시스템이 지원하는 것은 아님)
  • 차이: FULL OUTER JOIN은 왼쪽과 오른쪽 테이블 모두를 기준으로 합니다. 어느 한쪽에만 데이터가 있는 행도 결과에 포함됩니다.

주의사항:

  • 각 JOIN 유형은 데이터를 결합하는 특정한 방법을 제공하므로, 사용하는 쿼리의 목적과 필요한 결과에 따라 적절한 JOIN 유형을 선택해야 합니다.
  • OUTER는 LEFT, RIGHT, 또는 FULL과 함께 사용될 수 있지만, 종종 생략됩니다. 예를 들어, LEFT JOIN은 일반적으로 LEFT OUTER JOIN과 동일합니다.
  • 모든 데이터베이스 시스템이 모든 유형의 JOIN을 지원하는 것은 아닙니다. 특히, FULL OUTER JOIN은 지원하지 않는 시스템이 많습니다.