✨Today I Learned/MySQL

사전캠프 9일차 - SQL 5주차 강의 정리, SQL 코드카타 2번~10번

임빵빵 2024. 6. 5. 15:43

20240605 TIL

조회한 데이터에 아무 값이 없다면 어떻게 처리하는가

 

1. 없는 값을 제외해주기

-MYSQL 에서는 사용할 수 없는 값일때 연산에서 제외 >> 0으로 간주

2. 다른 값을 대신 사용하기

  • 다른 값이 있을 때 조건문 이용하기 : if(rating>=1, rating, 대체값)
  • null 값일 때 : coalesce(age, 대체값)


조회한 데이터가 상식적이지 않은 값을 가지고 있다면

-조건문으로 값의 범위를 지정하기

조건문으로 가장 큰 값, 가장 작은 값의 범위를 지정해 줄 수 있음


SQL로 Pivot Table 만들어보기

-업무를 효율적으로 하기위해!

 

[실습1] 음식점별 시간별 주문건수 피벗 테이블 뷰 만들기

-15~20시 사이, 20시 주문건수 기준 내림차순

1. 먼저 음식점별, 시간별 주문건수 집계하기

2. 피벗테이블 구조 만들기

[실습2] 성별, 연령별 주문건수 피벗테이블 뷰 만들기

-나이는 10~59세 사이, 연령 순으로 내림차순

1. 성별, 연령별 주문건수 집계하기

2. 피벗테이블 구조 만들기

3. 결과물

이런 식으로 피벗테이블이 만들어져서 나옴


알고리즘 코드카타

2번 - 역순 정렬하기

동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요

select name,
       datetime
from animal_ins
order by animal_id desc

3번 - 중복 제거하기

동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다

select count(distinct(name)) count
from animal_ins
where name is not null

4번 - 동물의 아이디와 이름

동물 보호소에 들어온 모든 동물의 아이디와 이름을 ANIMAL_ID순으로 조회하는 SQL문을 작성

select animal_id,
       name
from animal_ins
order by animal_id

5번 - 동물 수 구하기

동물 보호소에 동물이 몇 마리 들어왔는지 조회

select count(1) count
from animal_ins

6번 - 동명 동물 수 찾기

동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회

select name,
       count
from
(
select name,
       count(1) count
from animal_ins
where name is not null
group by name
) a
where count >= 2
order by name

7번 - 아픈 동물 찾기

동물 보호소에 들어온 동물 중 아픈 동물의 아이디와 이름을 조회하는 SQL 문을 작성. 이때 결과는 아이디 순으로 조회.

select animal_id,
       name
from animal_ins
where intake_condition = 'sick'
order by animal_id

8번 - 상위 n개 레코드

동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성

select name
from animal_ins
order by datetime
limit 1

9번 - 최솟값 구하기

동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성

select min(datetime) '시간'
from animal_ins

10번 - 어린동물 찾기

동물 보호소에 들어온 동물 중 젊은 동물1의 아이디와 이름을 조회하는 SQL 문을 작성. 이때 결과는 아이디 순으로 조회

select animal_id,
       name
from animal_ins
where intake_condition <> 'Aged'
order by animal_id