관리 메뉴

공부기록용

SQL 문제풀이(8~18) 본문

📚강의록📚/스파르타)SQL

SQL 문제풀이(8~18)

과부하가즈아 2023. 6. 3. 13:42

코딩테스트 연습 - 강원도에 위치한 생산공장 목록 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

다음은 식품공장의 정보를 담은 FOOD_FACTORY 테이블입니다. FOOD_FACTORY 테이블은 다음과 같으며 FACTORY_ID, FACTORY_NAME, ADDRESS, TLNO는 각각 공장 ID, 공장 이름, 주소, 전화번호를 의미합니다.

 

Q8. FOOD_FACTORY 테이블에서 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요. 이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요.

 

조회해야 하는 것

  • 공장 ID
  • 공장 이름
  • 주소

조건

  •  강원도에 위치한 식품공장
SELECT
    f.FACTORY_ID,
    f.FACTORY_NAME,
    f.ADDRESS
FROM
    FOOD_FACTORY as f
WHERE
    f.ADDRESS like '강원도%'
ORDER BY
    f.FACTORY_ID

코딩테스트 연습 - 나이 정보가 없는 회원 수 구하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

다음은 어느 의류 쇼핑몰에 가입한 회원 정보를 담은 USER_INFO 테이블입니다. USER_INFO 테이블은 아래와 같은 구조로 되어있으며, USER_ID, GENDER, AGE, JOINED는 각각 회원 ID, 성별, 나이, 가입일을 나타냅니다.

 

GENDER 컬럼은 비어있거나 0 또는 1의 값을 가지며 0인 경우 남자를, 1인 경우는 여자를 나타냅니다.

 

Q9. USER_INFO 테이블에서 나이 정보가 없는 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 USERS로 지정해주세요.

 

조회해야 하는 것

  • 회원이 몇 명인지

조건

  • 나이 정보가 없는 회원
  • 컬럼명은 USERS로 지정
SELECT
    COUNT(*) as USERS
FROM
    USER_INFO as u
WHERE
    u.AGE is NULL

코딩테스트 연습 - 경기도에 위치한 식품창고 목록 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

다음은 식품창고의 정보를 담은 FOOD_WAREHOUSE 테이블입니다. FOOD_WAREHOUSE 테이블은 다음과 같으며 WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, TLNO, FREEZER_YN는 창고 ID, 창고 이름, 창고 주소, 전화번호, 냉동시설 여부를 의미합니다.

 

Q10. FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하는 SQL문을 작성해주세요. 이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고 결과는 창고 ID를 기준으로 오름차순 정렬해주세요.

 

조회해야 하는 것

  • 창고의 ID
  • 이름
  • 주소
  • 냉동시설 여부

조건

  • 경기도에 위치한
  • 냉동시설 여부가 NULL인 경우, 'N'으로 출력
  • 창고 ID를 기준으로 오름차순 정렬
SELECT
    f.WAREHOUSE_ID,
    f.WAREHOUSE_NAME,
    f.ADDRESS,
    IFNULL(f.FREEZER_YN,"N")
FROM
    FOOD_WAREHOUSE as f
WHERE
    f.ADDRESS like '경기도%'
ORDER BY
    f.WAREHOUSE_ID

> IFNULL 알아보기

 

select  
	WAREHOUSE_ID, 
	WAREHOUSE_NAME, 
	ADDRESS, 
	COALESCE (FREEZER_YN, 'N') as FREEZER_YN
from
	FOOD_WAREHOUSE
Where 
	ADDRESS like '경기도%'
order by 
	WAREHOUSE_ID

> COALESCE 알아보기


코딩테스트 연습 - 조건에 맞는 회원수 구하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

다음은 어느 의류 쇼핑몰에 가입한 회원 정보를 담은 USER_INFO 테이블입니다. USER_INFO 테이블은 아래와 같은 구조로 되어있으며 USER_ID, GENDER, AGE, JOINED는 각각 회원 ID, 성별, 나이, 가입일을 나타냅니다.

 

GENDER 컬럼은 비어있거나 0 또는 1의 값을 가지며 0인 경우 남자를, 1인 경우는 여자를 나타냅니다.

 

Q11. USER_INFO 테이블에서 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력하는 SQL문을 작성해주세요.

 

조회해야 하는 것

  • 회원이 몇 명인지

조건

  • 2021년에 가입한 회원
  • 나이가 20세 이상 29세 이하인 회원
SELECT
    COUNT(u.USER_ID) as USERS
FROM
    USER_INFO as u
WHERE
    JOINED LIKE "2021%" AND AGE >= 20 AND AGE <= 29

> 조건 다시 해보기


코딩테스트 연습 - 이름이 없는 동물의 아이디 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

 

Q12. 동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다.

 

조회해야 하는 것

  • 동물의 ID

조건

  • 이름이 없는 채로 들어온 동물
  • ID는 오름차순 정렬
SELECT
    ANIMAL_ID
FROM
    ANIMAL_INS
WHERE
    NAME is NULL
ORDER BY
    ANIMAL_ID

코딩테스트 연습 - 가장 비싼 상품 구하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

다음은 어느 의류 쇼핑몰에서 판매 중인 상품들의 정보를 담은 PRODUCT 테이블입니다. PRODUCT 테이블은 아래와 같은 구조로 되어있으며, PRODUCT_ID, PRODUCT_CODE, PRICE는 각각 상품 ID, 상품코드, 판매가를 나타냅니다.

 

상품 별로 중복되지 않는 8자리 상품코드 값을 가지며, 앞 2자리는 카테고리 코드를 의미합니다.

 

Q13. PRODUCT 테이블에서 판매 중인 상품 중 가장 높은 판매가를 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 MAX_PRICE로 지정해주세요

 

조회해야 하는 것

  • 판매가를 출력

조건

  • 판매 중인 상품 중 가장 높은 판매가
  • 컬럼명은 MAX_PRICE로 지정
SELECT
    MAX(PRICE) as MAX_PRICE
FROM
    PRODUCT

> MAX(필드명)


코딩테스트 연습 - 흉부외과 또는 일반외과 의사 목록 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

다음은 종합병원에 속한 의사 정보를 담은DOCTOR 테이블입니다. DOCTOR 테이블은 다음과 같으며 DR_NAME, DR_ID, LCNS_NO, HIRE_YMD, MCDP_CD, TLNO는 각각 의사이름, 의사ID, 면허번호, 고용일자, 진료과코드, 전화번호를 나타냅니다.

 

Q14. DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요.

 

조회해야 하는 것

  • 의사의 이름
  • 의사ID
  • 진료과
  • 고용일자

조건

  • 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사
  • 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬
SELECT
    DR_NAME,	
    DR_ID,
    MCDP_CD,
    DATE_FORMAT(HIRE_YMD,'%Y-%m-%d')
FROM
    DOCTOR
WHERE
    MCDP_CD IN ('CS', 'GS')
ORDER BY 
    HIRE_YMD DESC, 
    DR_NAME

> WHERE MCDP_CD IN ('CS', 'GS') -> IN으로 해서 조건을 묶어주는 것

>> DATE_FORMAT(HIRE_YMD,'%Y-%m-%d') -> DATE_FORMAT 다시 알아보기


코딩테스트 연습 - 12세 이하인 여자 환자 목록 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

다음은 종합병원에 등록된 환자정보를 담은 PATIENT 테이블입니다. PATIENT 테이블은 다음과 같으며 PT_NO, PT_NAME, GEND_CD, AGE, TLNO는 각각 환자번호, 환자이름, 성별코드, 나이, 전화번호를 의미합니다.

 

Q15. PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요.

 

조회해야 하는 것

  • 환자이름
  • 환자번호
  • 성별코드
  • 나이
  • 전화번호

조건

  • 12세 이하인 여자환자
  • 전화번호가 없는 경우, 'NONE'으로 출력
  • 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬
SELECT
    PT_NAME,
    PT_NO,
    GEND_CD,
    AGE,
    IFNULL(TLNO,'NONE')
FROM
    PATIENT
WHERE
    AGE <= 12 
    AND GEND_CD = 'W'
ORDER BY
    AGE DESC,
    PT_NAME

> IFNULL(TLNO,'NONE') : IF만약 TLNO의 값이 NULL이면 'NONE'로 바꿔서 출력

>> WHERE 의 조건이 여러개가 들어간다면 AND로 바로 이어서 입력

>>> ORDER BY 정렬도 여러개일 때 위와 같이 써주기


코딩테스트 연습 - 인기있는 아이스크림 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

FIRST_HALF 테이블은 아이스크림 가게의 상반기 주문 정보를 담은 테이블입니다.FIRST_HALF 테이블 구조는 다음과 같으며, SHIPMENT_ID, FLAVOR, TOTAL_ORDER는 각각 아이스크림 공장에서 아이스크림 가게까지의 출하 번호, 아이스크림 맛, 상반기 아이스크림 총주문량을 나타냅니다.

 

Q16. 상반기에 판매된 아이스크림의 맛을 총주문량을 기준으로 내림차순 정렬하고 총주문량이 같다면 출하 번호를 기준으로 오름차순 정렬하여 조회하는 SQL 문을 작성해주세요.

 

조회해야 하는 것

  • 아이스크림의 맛

조건

  • 총주문량을 기준으로 내림차순 정렬하고 총주문량이 같다면 출하 번호를 기준으로 오름차순 정렬
SELECT
    FLAVOR
FROM
    FIRST_HALF 
ORDER BY
    TOTAL_ORDER DESC,
    SHIPMENT_ID

코딩테스트 연습 - 모든 레코드 조회하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

 

Q17. 동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.

 

조회해야 하는 것

  •  모든 동물의 정보

조건

  • ANIMAL_ID순
SELECT
    ANIMAL_ID,
    ANIMAL_TYPE,
    DATETIME,	
    INTAKE_CONDITION,	
    NAME,
    SEX_UPON_INTAKE
FROM
    ANIMAL_INS
ORDER BY
    ANIMAL_ID

코딩테스트 연습 - 조건에 맞는 도서 리스트 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

다음은 어느 한 서점에서 판매중인 도서들의 도서 정보(BOOK) 테이블입니다. BOOK 테이블은 각 도서의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.

 

Q18. BOOK 테이블에서 2021년에 출판된 '인문' 카테고리에 속하는 도서 리스트를 찾아서 도서 ID(BOOK_ID), 출판일 (PUBLISHED_DATE)을 출력하는 SQL문을 작성해주세요. 결과는 출판일을 기준으로 오름차순 정렬해주세요.

 

조회해야 하는 것

  • 도서 ID(BOOK_ID)
  • 출판일 (PUBLISHED_DATE)

조건

  • 2021년에 출판된 도서
  • '인문' 카테고리에 속하는 도서
  • 출판일을 기준으로 오름차순 정렬
SELECT 
    BOOK_ID, 
    DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM 
    BOOK
WHERE 
    CATEGORY = '인문' 
    AND YEAR(PUBLISHED_DATE) = 2021
ORDER BY 
    PUBLISHED_DATE;

>>

DATE_FORMAT()
DATE_FORMAT(날짜 , 형식)  : 날짜를 지정한 형식으로 출력
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d') AS 컬럼명 FROM 테이블명
-- 2022-12-29 출력​


YEAR()
날짜, 시간과 관련된 함수 중 하나이다.
SELECT YEAR(NOW()) FROM 테이블명
-- 2022 출력​

>  날짜 관련 함수 알아두기

> [mysql] DATE - 날짜와 시간 관련 함수 (tistory.com)

'📚강의록📚 > 스파르타)SQL' 카테고리의 다른 글

SQL 3주차  (0) 2023.06.02
SQL 문제풀이(1~7)  (0) 2023.06.01
SQL 2주차  (0) 2023.06.01
SQL 1주차  (0) 2023.06.01
Comments