SQL 알고리즘 풀이 - 3/22

송현진·2023년 3월 22일

SQL

목록 보기
3/17

💡배웠던 SQL을 이용해 알고리즘 풀어보자!

아픈 동물 찾기

  • 동물 보호소에 들어온 동물 중 아픈 동물의 아이디와 이름을 조회
    SELECT ANIMAL_ID,NAME FROM ANIMAL_INS
     WHERE INTAKE_CONDITION = 'Sick';

동물의 아이디와 이름

  • 동물 보호소에 들어온 모든 동물의 아이디와 이름을 ANIMAL_ID순으로 조회
    SELECT ANIMAL_ID, NAME FROM ANIMAL_INS
     ORDER BY ANIMAL_ID;

이름이 있는 동물의 아이디

  • 동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회. 단, ID는 오름차순 정렬
    SELECT ANIMAL_ID FROM ANIMAL_INS
     WHERE NAME is not null;

상위 n개 레코드

  • 동물 보호소에 가장 먼저 들어온 동물의 이름을 조회
    select name from animal_ins
     where datetime = (
         SELECT DATETIME FROM animal_ins 
         order by datetime limit 1
     )

여러 기준으로 정렬하기

  • 동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저
    SELECT animal_id, name, datetime from animal_ins
     order by name asc, datetime desc

어린 동물 찾기

  • 동물 보호소에 들어온 동물 중 젊은 동물1의 아이디와 이름을 조회
    SELECT ANIMAL_ID, NAME FROM ANIMAL_INS
     WHERE INTAKE_CONDITION != 'Aged'

역순 정렬하기

  • 동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회. ANIMAL_ID 역순
    SELECT name, datetime from animal_ins
     order by animal_id desc

강원도에 위치한 생산공장 목록 출력하기

  • 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회. 공장 ID를 기준으로 오름차순 정렬
    SELECT FACTORY_ID,FACTORY_NAME,ADDRESS 
     from FOOD_FACTORY 
     where substring(address, 1,3) = '강원도'
     order by FACTORY_ID

나이 정보가 없는 회원 수 구하기

  • 나이 정보가 없는 회원이 몇 명인지 출력. 컬럼명은 USERS
    SELECT count(*) as USERS from user_info
     where age is null

경기도에 위치한 식품창고 목록 출력하기

  • 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회. 냉동시설 여부가 NULL인 경우, 'N'으로 출력. 창고 ID를 기준으로 오름차순 정렬
    SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, if(FREEZER_YN is null, 'N', FREEZER_YN)
     from FOOD_WAREHOUSE 
     where ADDRESS like '경기도%'
     order by WAREHOUSE_ID

조건에 맞는 회원수 구하기

  • 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력
    SELECT COUNT(*) AS USERS
     FROM USER_INFO
     WHERE age between 20 and 29 AND joined like '2021%'

이름이 없는 동물의 아이디

  • 동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회. 단, ID는 오름차순 정렬
    SELECT ANIMAL_ID from ANIMAL_INS 
     where name is null
     order by ANIMAL_ID

아직은 subquery, join 등이 안나와 쉽게 풀 수 있었다. 상위 n개 레코드에선 subquery를 연습해보고 싶어서 작성해봤다. 문제들의 다른 풀이로 어떻게 풀어지는 지 더 생각해봐야겠다.

profile
개발자가 되고 싶은 취준생

0개의 댓글