일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Notice
Recent Posts
Recent Comments
Link
Tags
- 펙토리얼
- 배열 순환 문제 공식
- 자바 소인수분해
- 소인수분해 구하는 공식
- 배열 순환 자바
- 경우의 수 자바
- 외계행성의 나이 자바
- 스프링 부트 프로젝트 세팅
- 오블완
- 프로그래머스 공 던지기 게임
- 자바 합성수 찾기
- 스프링부트 의존성 설정
- 프로그래머스 문자열 정렬하기(1)
- string과 stringbuilder
- 자바 팩토리얼
- 프로그래머스
- 접속 url 출력
- stringbuilder란
- string과 stringbuilder의 차이
- spring boot 배너 설정
- 스프링 부트 배너 설정
- 개미 군단 자바
- 모스부호(1) 자바
- string과 stringbuilder 성능 최적화
- 숨어있는 숫자의 덧셈 (1) 자바
- string과 stringbuilder 성능 차이
- string과 stringbuilder의 차이점
- 티스토리챌린지
- 왓챠피디아 클론 코딩
- 배열 순환
Archives
- Today
- Total
여름 언덕에서 배운 것
IF/CASE 본문
코딩애플 온라인 강좌 - 개발자도 단기완성!
단연 NO1 강사님의 NO.1 강의 역시나 명강입니다. IT 업계의 대치동 NO1. 강사같은 엄청난 강의력. 코딩애플님의 강의는, 엄청나게 기초적인 것부터 가르치는 듯 보이지만, 실제로 다루는 깊이는 절
codingapple.com
🍎SQL 짜다 보면 문자나 숫자같은 데이터 넣는 곳이 많습니다.
근데 그 곳에 고정된 값이 아니라 조건에 따라서 각각 다른 값을 넣고 싶은 경우 사용하면 됩니다.
IF(조건식, 조건식맞으면이거, 조건식틀리면이거);
SELECT IF(1 + 2 = 3, '맞음', '틀림');
참이면 맞음이 나오고 틀리면 틀림이 나온다.
SELECT 고객명, 사용금액, IF(사용금액>200000, "우수", "거지") FROM card;
if는 양자택일만 가능하다는 점이 단점이다.
20만원 이상이면 우수 10~20이면 준수 10만원 미만 보통 이렇게 3가지는 표현이 안된다.
경우가 3개 이상이면 CASE문법
* 조건식들이 전부 맞지 않을 경우 ELSE 우측에 있는 값을 남겨줍니다.
CASE
WHEN 조건식1 THEN 남길값1
WHEN 조건식2 THEN 남길값2
WHEN 조건식3 THEN 남길값3
END
CASE
WHEN 조건식1 THEN 남길값1
WHEN 조건식2 THEN 남길값2
WHEN 조건식3 THEN 남길값3
ELSE 남길값4
END
컴퓨터가 위에서부터 읽다가 참을 만나면 조건식 참에 해당하는 답만 남기고 case 문법 종료
SELECT 고객명, 사용금액,
CASE
WHEN 사용금액 >= 200000 THEN '우수'
WHEN 사용금액 >= 100000 AND 사용금액 < 200000 THEN '준수'
WHEN 사용금액 < 100000 THEN '그지'
END AS 평가
FROM card;
조건식에 맞으면 바로 CASE 문법을 종료하기 때문에
WHEN 사용금액 >= 100000 THEN '준수' 이걸로 바꿔도 가넝한
문제
SELECT sum(
CASE
WHEN 고객등급 = 'vip' THEN 3
WHEN 고객등급 = '로열' THEN 2
WHEN 고객등급 = '패밀리' THEN 1
END
)FROM card
또는
SELECT sum(
CASE
WHEN 고객등급 = 'vip' THEN 3
WHEN 고객등급 = '로열' THEN 2
ELSE 1
END
)FROM card
SELECT SUM(3) FROM card
이렇게 하면 행마다 3을 다 더한다.
사용금액 30만원 이상은 50% 증액, 30만원 미만은 10% 증액해서 사용금액의 총 합계를 출력
SELECT sum(
CASE
WHEN 사용금액 > 300000 THEN 사용금액+(사용금액*0.5)
WHEN 사용금액 < 300000 THEN 사용금액+(사용금액*0.1)
END
) AS 장부조작 FROM card
또는
SELECT SUM(
IF( 사용금액 >= 300000, 사용금액 * 1.5, 사용금액 * 1.1 )
) FROM mart.card
고객 등급 재설정...😲
SELECT 고객명,사용금액,고객등급,
CASE
WHEN 사용금액 >=300000 THEN 'vip' (고객등급 = vip 로 적어서 계속 에러)
WHEN 사용금액 >=200000 THEN '로열'
ELSE '패밀리'
END AS 변동등급
FROM card
근데 이제 변동될 고객만 출력하려면
SELECT 고객명,사용금액,고객등급
FROM card
WHERE 고객등급 !=CASE
WHEN 사용금액 >=300000 THEN 'vip'
WHEN 사용금액 >=200000 THEN '로열'
ELSE '패밀리'
END
728x90
'가랑비에 옷 젖는 줄 모른다 💻 > SQL & DB' 카테고리의 다른 글
컬럼에 제약조건 걸기 (constraint) 🔑 (0) | 2023.07.30 |
---|---|
정처기 단골문제 DDL, DCL,DML 그리고 default (0) | 2023.07.30 |
그룹그룹 GROUP BY 5인조가 좋음 (0) | 2023.07.28 |
서브쿼리 (0) | 2023.07.27 |
컬럼으로 사칙연산, 문자데이터 다루기 (0) | 2023.07.27 |