[22.08.19] CASE
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;