day6 는
조건 만들기
여러 조건 한번에 만들기
함수 만들기
의 항목들을 규칙 만들기라는 주제로 이제는 기본보다는 조금 난이도가 있는 교육을 진행하였다.
오늘 배운 교육을 바탕으로 실습을 진행해 보겠다.
오늘은 함수를 만들고 사용하고 복습하는 시간을 가져보겠다.
주어지는 테이블은 이 테이블을 참고 할 것이다.

실습1
공격력과 방어력의 합이 120보다 크면 ‘very strong’, 90보다 크면 ‘strong’, 모두 해당 되지 않으면 ‘not strong’를 반환하는 함수 ‘isStrong’을 만들고 사용해주세요.
조건1: attack과 defense를 입력값으로 사용하세요.
조건2: 결과값 데이터 타입은 VARCHAR(20)로 해주세요.
함수를 생성할 때 필요한 구문이 있다
SET GLOBAL log_bin_trust_function_creators = 1;
DELIMITER //
이 사이에 함수 식을 넣어야 함수가 생성된다.그냥 외워야 한다.
//DELIMITER
기본적이 함수 만들기 쿼리 문법은
CREATE FUNCTION [함수 이름] ( [입력값 이름] [데이터 타입], …)
RETURNS [결과값 데이터 타입]
BEGIN
DECLARE [임시값 이름] [데이터 타입];
SET [임시값 이름] = [입력값 이름];
쿼리;
RETURN 결과값
END
이다
생성한 함수를 지우는 쿼리는
DROP FUNCTION [함수 이름];
when than 을 사용하여 조건을 부여하였다
개인적으로 그 동안 해온 실습 중 가장 애먹었던거 같다...;;


실습2
포켓몬의 번호가 150보다 작으면 값을 ‘old’로 반환하고, 번호가 150보다 크거나 같으면 값을 ‘new’로 반환해서 ‘age’라는 별명으로 가져와 주세요
case 문은 형식이 2개가 있다


case 문을 이용하여 조건을 여러개 생성한다.
case 문을 통해 나온 컬럼은 AS를 이용해 age라는 별명을 붙인다.


실습3
포켓몬의 공격력과 방어력의 합이 100보다 작으면 값을 ‘weak’로 반환하고, 100보다 크거나 같으면 값을 ‘strong’로 반환해서 ‘ability’라는 별명으로 가져와 주세요.
실습2와 거의 동일한 실습인데
비교연산자를 응용한 쿼리문이다.


실습4
포켓몬의 타입 별 공격력의 평균이 60 이상이면 값을 True(1)로 반환하고, 60보다 작으면 False(0)를 반환해 ‘is_strong_type’이라는 별명으로 가져와 주세요.
if문을 이용해 결과값을 True(1) 또는 False(0) 로 반환한다. + MySQL에서 True = 1, False = 0 이다
IF :
§ IF(조건식, 참일 때 값, 거짓일 때 값) 형식으로 사용합니다.
§ 주로 SELECT절에 사용하는 함수로, 결과 값을 새로운 컬럼으로 반환합니다
타입별로 묶었기 때문에 group by 절을 활용한다.


실습5
포켓몬의 공격력이 100보다 크고, 방어력도 100보다 크면 값을 True(1)로 반환하고, 둘 중 하나라도 100보다 작으면 False(0)를 반환해 ‘ace’라는 별명으로 가져와 주세요
조건을 부여하기 위해 case문을 사용하였고
비교연산자를 응용하여 넣었다.
case문에서 나오는 컬럼은 별명을 넣기때문에 AS 함수를 사용하였다.
조건이 하나이기에 IF문으로도 작성이 가능하다.


실습6
포켓몬의 번호가 100보다 작으면 값을 ‘<100’을 반환하고, 200보다 작으면 값을 ‘<200’을 반환하고, 500보다 작으면 값을 ‘<500’을 반환하는 규칙을 만들고, 각 포켓몬 별 규칙 적용 값을 ‘number_bin’이라는 별명으로 가져와 주세요
위의 실습들과 다를게 없다 다만 조건이 2개 이상이기에 if절은 사용 못하고 case문을 사용해야 한다.


실습7
아래 표에 따른 값을 반환하는 규칙을 만들고, 각 포켓몬 별 규칙 적용 값을 ‘age_attack’이라는 별명으로 가져와 주세요
실습6과 동일한 패턴이다.


실습8
타입 별 포켓몬 수가 1개면 ‘solo’, 3개 미만이면 ‘minor’, 3개 이상이면 ‘major’를 반환하고, ‘count_by_type’이라는 별명으로 가져와 주세요
위의 실습들과 같이 case문을 응용한 쿼리이지만
group by를 넣음으로 분류가 가능하고
count 함수를 이용해 갯수를 샐 수 있다.


'SQL > 교육,실습' 카테고리의 다른 글
| SQL데이터 분석 첫걸음 실습 (UNION, UNION ALL) (0) | 2023.04.24 |
|---|---|
| SQL데이터 분석 첫걸음 실습 (JOIN) (0) | 2023.04.23 |
| SQL데이터 분석 첫걸음 실습 (GROUP BY, HAVING) (0) | 2023.04.21 |
| SQL데이터 분석 첫걸음 실습 (ORDER BY, RANK() OVER, 각종 함수) (0) | 2023.04.20 |
| SQL데이터 분석 첫걸음 실습 (WHERE, 각종 연산자) (0) | 2023.04.19 |