day4 는
데이터 줄 세우기
데이터 순위 만들기
문자형 데이터 정복하기
숫자형 데이터 정복하기
날짜형 데이터 정복하기
의 항목들을 원하는 데이터 만들기라는 주제로 기본적인 교육을 마저 진행하였다.
오늘 배운 교육을 바탕으로 실습을 진행해 보겠다.
이번 day 실습은 데이터를 요청대로 만들어보는 실습 위주로 진행한다.
이 테이블을 참고하여 실습을 진행 해보겠다.

실습1
포켓몬 테이블에서 포켓몬의 이름과 이름의 글자 수를 이름의 글자 수로 정렬해서 가져와 주세요.
(정렬 순서는 글자 수가 적은 것부터 많은 것 순으로 해주세요.)
lenght 함수를 이용하여 글자수를 가져오고
그 기준으로 순서를 나열한다.
적은 것 부터 많은 것 순으로 해야하는데 원래는 ASC가 order by 절 뒤에 들어가야 하지만 생략가능하므로 생략하였다.


실습2
포켓몬 테이블에서 방어력 순위를 보여주는 컬럼을 새로 만들어서 ‘defense_rank’라는 별명으로 가져와 주세요. 이 때, 포켓몬 이름 데이터도 함께 가져와 주세요.
조건1: 방어력 순위란 방어력이 큰 순서대로 나열한 순위를 의미합니다.
조건2: 공동 순위가 있으면 다음 순서로 건너 뛰어 주세요
순위를 구하고 싶을 때에는 데이터를 정렬해 순위를 만들어주는 함수 RANK 를 사용하면 된다.
RANK 특징은
§ RANK() OVER (ORDER BY [컬럼 이름]) 형식으로 사용합니다.
§ 항상 ORDER BY와 함께 사용합니다.
§ SELECT절에 사용하며, 정렬된 순서에 순위를 붙인 새로운 컬럼을 보여줍니다. § 테이블의 실제 데이터에는 영향을 미치지 않습니다.
RANK함수도 종류가 있는데
RANK : 공동 순위가 있으면 다음 순서로 건너 뜀
DENSE_RANK : 공동 순위가 있어도 다음 순위를 뛰어 넘지 않음
ROW_NUMBER : 공동 순위를 무시함
이번 실습에서는 공동 순위가 있으면 다음 순서로 건너 뛰기 때문에 RANK를 사용하면 된다.


실습3
포켓몬 테이블에서 포켓몬을 포획한 지 기준 날짜까지 며칠이 지났는 지를 ‘days’라는 별명으로 가져와 주세요. 이 때, 포켓몬의 이름도 함께 가져와 주세요. 조건: 기준 날짜는 2022년 2월 14일입니다.
날짜의 차를 구하는 것이니 datediff함수를 활용한다
DATEDIFF : DATEDIFF(날짜1, 날짜2) 날짜1과 날짜2의 차이 반환 (날짜1 ‒ 날짜2)
추가로 시간의 차를 구하는 것은 timediff이다
TIMEDIFF TIMEDIFF(시간,1 시간2) 시간1과 시간2의 차이 반환 (시간1 ‒ 시간2)


실습4
포켓몬의 이름을 마지막 3개 문자만, ‘last_char’이라는 별명으로 가져와 주세요
right함수를 이용하여 마지막 문자를 추출하고 AS함수를 이용하여 별명을 붙인다.
RIGHT : RIGHT(“ABC”, 1) “ABC”에서 오른쪽에서 1번째 문자까지 반환


실습5
포켓몬 이름에서 이름에 o가 포함된 포켓몬만 모든 소문자 o를 대문자 O로 바꿔서 ’bigO’라는 별명으로 가져와 주세요.
Ex) 이름이 ‘pokemon’일 경우, ’bigO’ 값은 ’pOkemOn’이 됩니다
replace 함수를 이용하여 원하는 문자를 바꾸고
와일드카드를 이용해 원하는 o만 포함한 컬럼을 추출한다.


실습6
포켓몬 타입을 가장 첫번째 글자 1자, 가장 마지막 글자 1자를 합친 후, 대문자로 변환해서 ‘type_code’라는 별명으로 가져와 주세요. 이 때, 이름도 함께 가져와 주세요.
Ex) 타입이 ‘water’일 경우, ‘type_code’ 값은 ‘w’와 ‘r’를 대문자로 바꾼 ‘WR’이 됩니다
upper함수를 활용해 대문자로 변환하고 concat함수를 활용하여 연결한다.
UPPER : UPPER(“abc”) “abc”를 대문자로 바꿔 반환
CONCAT : CONCAT(“ABC”, “DEF”) “ABC” 문자열과 “CDF” 문자열을 합쳐 반환


실습7
모든 포켓몬의 공격력 평균을 정수로 반올림해서 ‘avg_of_attack’이라는 별명으로 가져와 주세요.
round 함수를 이용하여 소숫점이 있는 수를 정수로 반올림한다.
ROUND : ROUND(숫자, 자릿수) 숫자를 소수점 자릿수까지 반올림해서 반환


실습8
모든 포켓몬의 공격력을 2로 나눈 나머지를 ‘div2’라는 별명으로 가져와 주세요. 이 때, 이름도 함께 가져 와 주세요
mod함수를 이용해 나머지를 구한다.
MOD : MOD(숫자A, 숫자B) 숫자A를 숫자B로 나눈 나머지 반환


실습9
공격력이 50 이하인 포켓몬의 공격력을 방어력으로 뺀 값의 절댓값을 ‘diff’라는 별명으로 가져와 주세요. 이 때, 이름도 함께 가져와 주세요.
ABS함수를 이용하여 절댓값을 추출한다.
ABS : ABS(숫자) 숫자의 절댓값 반환


실습10
현재 날짜와 시간을 가져와 주세요. 각각 now_date, now_time이라는 별명으로 가져와 주세요
현재 날짜와 시간은 CURRENT_DATE 함수와 CURRENT_TIME 함수로 불러올 수 있다.
CURRENT_DATE() : 현재 날짜 반환
CURRENT_TIME() : 현재 시간 반환


실습11
포켓몬을 포획한 날의 연도, 월, 일을 각각 숫자로 가져와 주세요. 연도는 year, 월은 month, 일은 day라 는 별명으로 가져와 주세요.
연도 월 일은 각각 year, month,day 함수로 추출할 수 있다.
YEAR : YEAR(날짜) 날짜의 연도 반환
MONTH : MONTH(날짜) 날짜의 월 반환
DAY : DAY(날짜) 날짜의 일수 반환


'SQL > 교육,실습' 카테고리의 다른 글
| SQL데이터 분석 첫걸음 실습 (IF, CASE, 함수 만들기) (0) | 2023.04.22 |
|---|---|
| SQL데이터 분석 첫걸음 실습 (GROUP BY, HAVING) (0) | 2023.04.21 |
| SQL데이터 분석 첫걸음 실습 (WHERE, 각종 연산자) (0) | 2023.04.19 |
| SQL데이터 분석 첫걸음 실습 (DISTINCT, AS) (0) | 2023.04.18 |
| SQL데이터 분석 첫걸음 실습 (SELECT, CREATE, INSERT INTO VALUES) (0) | 2023.04.17 |