[MYSQL] SQL 변수 선언 및 사용 & CASE WHEN THEN 문법

Jihoon·2023년 6월 12일
0

DB & SQL Study

목록 보기
7/8

-해당 게시글은 https://jundol.me/77 블로그를 참조하였습니다.

🤔 SQL 변수 선언 및 사용

1. 변수 선언

DECLARE @변수이름 데이터형식
DECLARE @HOUR VARCHAR(50) - 예시

2. 변수 값 대입

SET @변수이름 = 변수의 값
SET @HOUR = -1

3. 변수 이름

SELECT @변수이름

4. 변수 사용한 실습!

DECLARE @myVar1 INT
DECLARE @myVar1 SMALLINT, @myVar3 DECIMAL(5,2)
DECLARE @myVar4 NCHAR(20)

SET @myVar1 = 5
SET @myVar2 = 3
SET @myVar3 = 4.25
SET @myVar4 = 'CARD TYPE==>'

SELECT @myVar1
SELECT @myVar2 + @myVar3

SELECT @myVar4, * FROM Sales.CreditCard WHERE ExpMonth = 12
  • 결과

[PROGRAMMERS] 입양 시각 구하기(2) - 예제

SET @HOUR = -1;
SELECT (@HOUR := @HOUR +1) AS HOUR,
    (SELECT COUNT(HOUR(DATETIME)) 
    FROM ANIMAL_OUTS 
    WHERE HOUR(DATETIME)=@HOUR) AS COUNT 
    FROM ANIMAL_OUTS
WHERE @HOUR < 23;
  • 결과 !

  • 🔥 문제 FEEDBACK
  • SET을 통해서 변수 설정해주고!

  • SELECT 통해서 변수 값 대입 ( = 은 비교연산자로 인식되기 때문에(SET 구문 제외), != 를 통해 변수 값 설정합니다

  • != +1 을 통해서 23까지 컬럼에 값이 생기도록 만듭니다 (반복문처럼)

[MySQL] CASE 기본 사용법

아래 내용은 https://extbrain.tistory.com/46 블로그를 참조했습니다.

  • 주의 사항

하나의 반환 값은 동작하지 않아요~~!

  • 사용법
CASE
		WHEN 조건
        THEN '반환 값'
		WHEN 조건
        THEN '반환 값'
        ELSE 'WHEN 조건에 해당 안되는 경우 반환 값'
END
  • WHEN과 THEN은 한 쌍이어야 합니다.

  • WHEN과 THEN은 다수 존재 가능합니다.

  • ELSE가 그 외 조건에 대해 반환 값 설정 가능합니다.

  • ELSE가 존재하지 안혹, 조건에 맞지 않아서 반환 값이 없으면 NULL를 반환합니다.

[PROGRAMMERS] 가격대 별 상품 개수 구하기 - 예제

SELECT (
    CASE
        WHEN PRICE < 10000
        THEN 0
        ELSE TRUNCATE(PRICE, -4) # 4개 삭제하면 0으로 바뀌는 거구나!
        END) AS PRICE_GROUP, COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP
  • TRUNCATE
  • TRUNCATE(PRICE, -4) -> PRICE 가격을 뒤에서 4번째 까지 버려서 0으로 만들어짐 !!!!!!!

[PROGRAMMERS] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 - 예제

SELECT CAR_ID,
    CASE
        WHEN CAR_ID IN (SELECT CAR_ID
                       FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
                       WHERE '2022-10-16' BETWEEN START_DATE AND END_DATE) THEN '대여중'
        ELSE '대여 가능'
        END AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC;
  • FEEDBACK
  • 위와 같이 CASE WHEN 구문 활용하는 것은 알았지만, 저렇게 서브쿼리를 쓸 수 있구나라는 건 청므 알았다

  • 그리고( '2022-10-16' BETWEEN START AND END) BETWEEN 구문 자주나오는데 암기하고 있자!!
profile
장난감이 데이터인 사람

0개의 댓글