1 minute read

CASE

#CASE #쿼리 #서브쿼리

CASE

특정 상황에서 데이터를 변환하여 사용할 수 있음

CASE
	WHEN 조건식 THEN 
	WHEN 조건식 THEN 
	ELSE 
END
-- 성별 1(남자), 2(여자)
SELECT 
    id,
    CASE 
        WHEN gender = 1 THEN '남자'
        WHEN gender = 2 THEN '여자'
        -- ELSE 
    END AS 성별
FROM healthcare 
LIMIT 5;
-- id  성별
-- --  -----
-- 1   남자
-- 2   여자
-- 3   여자
-- 4   남자
-- 5   여자

서브쿼리

특정한 값을 메인 쿼리에 반환하여 활용하는 것

SELECT *
FROM 테이블
WHERE 컬럼1 = (
	SELECT 컬럼1
	FROM 테이블
);
  • 단일행 서브쿼리

    • 서브쿼리의 결과가 0 또는 1개인 경우

    • 단일행 비교 연산자와 함께 사용

      SELECT COUNT(*)
      FROM users
      WHERE age = (SELECT MIN(age) FROM users);
      
      SELECT COUNT(*)
      FROM users
      WHERE country = (
      	SELECT country
      	FROM users
      	WHERE first_name = '은정' AND last_name='유'
      );
      
      SELECT
      	(SELECT COUNT(*) FROM users) AS 총인원,
      	(SELECT AVG(balance) FROM users) AS 평균연봉
      	(SELECT AVG(age) FROM users) AS 평균나이
      ;
      
      UPDATE users
      SET balance = (SELECT AVG(balance) FROM users);
      
  • 다중행 서브쿼리

    • 서브쿼리 결과가 2개 이상인 경우

    • 다중행 비교 연산자와 함께 사용

      SELECT COUNT(*)
      FROM users
      WHERE country IN (
      	SELECT country
      	FROM users
      	WHERE first_name = '은정' AND last_name='이'
      );
      
  • 다중컬럼 서브쿼리

    SELECT
    	last_name,
    	first_name,
    	age
    FROM users
    WHERE (last_name, age) IN (
    	SELECT last_name, MIN(age)
    	FROM users
    	GROUP BY last_name)
    ORDER BY last_name;
    

Updated: