본문 바로가기
데이터베이스

[DB] SQL 기본 조건문(CASE WHEN, JOIN, UNION, GROUP BY, HAVING)

by Taehyung Kim, dev 2020. 12. 26.
728x90

CASE WHEN

SELECT CustomerName, City, Country FROM Customers
ORDER BY
(CASE
	WHEN City is NULL Then Country
	ELSE City
END);
  • 명령어 해석
    • Customers 테이블에서 CustomerName, City, Country 속성을 가지고 있는 데이터 조회를 쿼리한다.
    • 단 아래의 조건으로 정렬하여 조회 값을 가져온다.
      • City 가 null 이라면 Country 기준으로 정렬한다.
      • 그렇지 않다면 City 기준으로 정렬한다.

JOIN

기준을 가지고 데이터 결합

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
  • 명령어 해석
    • Customers 테이블과 Orders 테이블에서 OrderID, CustomerName, OrderDate 데이터 조회를 쿼리한다.
    • 단 Orders 테이블의 CustomerID 와 Customers 테이블에 CustomerID 가 같은 경우를 조건으로 조회한다.

 

 

UNION

합집합의 개념

SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
  • 명령어 해석
    • Customers 테이블에서 City 를 가져온다.
    • Suppliers 테이블에서 City 를 가져온다.
    • 두 테이블을 UNION 한다.
    • City 를 기준으로 정렬한다.

GROUP BY

특정 열을 기준으로 그룹화하여 나타냅니다.

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;
  • 명령어 해석
    • Customers 테이블에서 CustomerID 의 개수와 Country 데이터 조회를 쿼리한다.
    • 단 Country 를 기준으로 그룹화합니다.

HAVING

GROUP BY 와 함께 조건을 부여할 때 쓰입니다.

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;
  • 명령어 해석
    • Customers 테이블에서 CustmerID의 개수와 Country 데이터 조회를 쿼리합니다.
    • 단 Country 기준으로 그룹화하여 아래의 조건으로 조회합니다.
      • CustomerID 의 개수가 5개 이상인가?
    • 위 조건에 해당하는 데이터를 CustomerID 개수를 내림차순으로 정렬합니다.
728x90

댓글