데이터베이스

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

Taehyung Kim, dev 2020. 12. 26. 12:25
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