SQL Select문 정리! - (Subquery, WITH, 문자열, CASE)

김지환·2023년 5월 11일
0

sql

목록 보기
4/5
post-thumbnail

안녕하세요! 오늘은 Subquery를 정리해보며 복습해 보겠습니다🙂


Subquery 🧾

Subquery란? 쿼리 안의 쿼리를 의미하며, 보통 Subquery는 SELECT 문장 내부에서 사용되며, Subquery의 결과를 통해 외부 쿼리가 실행됩니다. 이를 통해 복잡한 데이터 추출과 집계를 쉽게 처리할 수 있습니다.

예를 들어서 카카오페이로만 결제한 유저들의 정보를 확인할려면

SELECT u.user_id, u.name, u.email FROM Users u
WHERE u.user_id IN (
	SELECT user_id FROM Orders
	WHERE payment_method = 'kakaopay'
)

위와 같이 쿼리안에 쿼리문을 작성하여 결과값을 불러올 수 있습니다.


WITH 👪

WITH 절은 서브쿼리를 사용할 때 반복적으로 사용되는 중복 코드를 단순화하고 가독성을 높여주는 문법입니다. WITH 절은 쿼리의 가장 상단에 위치하며, 하나 이상의 서브쿼리를 정의할 수 있습니다. 이렇게 정의된 서브쿼리는 이후 쿼리에서 재사용됩니다.

WITH Sales AS (
  SELECT *
  FROM Orders
  WHERE OrderDate >= '2023-01-01'
)
SELECT *
FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Sales);

이 쿼리는 Orders 테이블에서 OrderDate가 '2023-01-01' 이후인 행들을 Sales라는 서브쿼리로 정의한 뒤, Customers 테이블에서 Sales 서브쿼리에서 추출된 CustomerID와 일치하는 행을 반환합니다.


문자열 🔠

SQL을 사용하다보면 문자열 데이터를 원하는 형태로 정리해야 하는 경우가 있는데 몇 개의 예시로 파악해 보겠습니다.

이메일에서 아이디만 가져오기

SELECT user_id, email, SUBSTRING_INDEX(email, '@', 1) FROM Users

@ 를 기준으로 텍스트를 나누고, 그 중 1번째 부분을 가져옵니다.

이메일에서 이메일 도메인만 가져오기

SELECT user_id, email, SUBSTRING_INDEX(email, '@', -1) FROM Users

@ 를 기준으로 텍스트를 나누고, 그 중 마지막(-1)번째 부분을 가져옵니다.


CASE 🗄

CASE 문법은 특정 조건에 따라 값을 반환하거나 특정 값을 변경하는 데 사용됩니다. 일반적으로 SELECT 문장 내부에서 사용됩니다.

SELECT CustomerID,
  CASE
    WHEN Country = 'USA' THEN 'United States'
    WHEN Country = 'UK' THEN 'United Kingdom'
    ELSE Country
  END AS CountryName
FROM Customers;

이 쿼리는 Customers 테이블의 Country 열의 값이 'USA'일 경우 'United States', 'UK'일 경우 'United Kingdom', 그 외의 경우에는 해당 값 그대로를 반환하는 CountryName 열을 SELECT 문장에서 생성합니다.

CASE 문법은 여러 조건을 포함할 수 있으며, 각 조건에 따라 다른 결과 값을 반환할 수 있습니다. 다음은 Subquery와 WITH절을 함께 사용한 예시입니다.

WITH Table1 AS (
	SELECT pu.point_user_id, pu.point,
	CASE 
	WHEN pu.point >= 10000 THEN '1만 이상'
	WHEN pu.point >= 5000 THEN '5천 이상'
	ELSE '5천 미만'
	END AS level
	FROM point_users pu
)
SELECT level, count(*) AS cnt FROM Table1
GROUP BY level

위 쿼리문을 통해 포인트에 따른 회원수를 구분하여 나타낼 수 있습니다.


Subquery와 문자열, WITH절, CASE문법을 사용해보면서 SQL의 이해도를 한단계 더 높일 수 있었습니다. 항상 느끼는거지만 자주 사용해보고 손에 익혀봐야 숙련도가 100%에 도달할 것입니다. 오늘도 읽어주셔서 감사합니다!!😊

0개의 댓글

관련 채용 정보