💾database

[프로그래머스 / SQL] SELECT 문 부수기

2024. 9. 18. 15:19
목차
  1. 평균 일일 대여 요금 구하기
  2. 흉부외과 또는 일반외과 의사 목록 출력하기
  3. 과일로 만든 아이스크림 고르기
  4. 3월에 태어난 여성 회원 목록 출력하기
  5. 서울에 위치한 식당 목록 출력하기
  6. 조건에 부합하는 중고거래 댓글 조회하기
  7. 인기있는 아이스크림
  8. 강원도에 위치한 생산공장 목록 출력하기
  9. 12세 이하인 여자 환자 목록 출력하기
  10. 조건에 맞는 도서 리스트 출력하기
  11. 조건에 맞는 회원수 구하기
  12. 업그레이드 된 아이템 구하기
  13. Python 개발자 찾기
  14. 조건에 맞는 개발자 찾기
  15. 잔챙이 잡은 수 구하기
  16. 가장 큰 물고기 10마리 구하기
  17. 특정 물고기를 잡은 총 수 구하기
반응형

 

안녕하세요. 오늘은 저를 위해 작성해 두는 프로그래머스 SQL 답지입니다. 

 

 

평균 일일 대여 요금 구하기

ROUND()

: 소수점 반올림하기 (셋째 자리에서 반올림할 경우 ROUND(DAILY_FEE, 2))

SELECT ROUND(AVG(DAILY_FEE),0) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV'
GROUP BY CAR_TYPE

 

 

흉부외과 또는 일반외과 의사 목록 출력하기

DATE_FORMAT()

: 2024-01-01 로 표현하고 싶을 때는 DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') 이렇게 작성한다.

SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME ASC

 

 

과일로 만든 아이스크림 고르기

JOIN을 활용하여 문제를 풀었다. 

SELECT F.FLAVOR
FROM FIRST_HALF AS F JOIN ICECREAM_INFO AS I ON I.FLAVOR = F.FLAVOR
WHERE INGREDIENT_TYPE = 'fruit_based' AND TOTAL_ORDER > 3000
ORDER BY TOTAL_ORDER DESC;

 

 

 

3월에 태어난 여성 회원 목록 출력하기

IS NULL, IS NOT NULL

: NULL 인지 아닌지 확인하는 명령어이다. 

SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE GENDER = 'W' AND DATE_FORMAT(DATE_OF_BIRTH, '%m') = 3 AND TLNO IS NOT NULL
ORDER BY MEMBER_ID;

 

 

서울에 위치한 식당 목록 출력하기

GROUP BY 

: REVIEW 테이블에는 REST_ID가 여러 개 있다. 이를 하나의 튜플로 묶기 위해서 사용한다. 

: GROUP BY 와 함께 SUM, AVG, MIN, MAX를 사용할 수 있다. 

'서울%'

서울로 시작하는 문자열을 찾고 싶을 때는 위와 같이 작성한다. 

SELECT R.REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND(AVG(REVIEW_SCORE), 2) AS SCORE
FROM REST_INFO AS I RIGHT JOIN REST_REVIEW AS R ON R.REST_ID = I.REST_ID 
WHERE ADDRESS LIKE '서울%'
GROUP BY I.REST_ID
ORDER BY SCORE DESC, FAVORITES DESC;

 

 

조건에 부합하는 중고거래 댓글 조회하기

게시글의 컬럼인지 댓글의 컬럼인지 잘 확인해야 한다. 

SELECT TITLE, B.BOARD_ID, R.REPLY_ID, R.WRITER_ID, R.CONTENTS, DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d') AS CREATED_DATE
FROM USED_GOODS_BOARD AS B JOIN USED_GOODS_REPLY AS R ON R.BOARD_ID = B.BOARD_ID
WHERE DATE_FORMAT(B.CREATED_DATE, '%Y-%m') = '2022-10'
ORDER BY R.CREATED_DATE, TITLE

 

 

인기있는 아이스크림

SELECT FLAVOR
FROM FIRST_HALF
ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID ASC

 

 

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

SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '강원도%'
ORDER BY FACTORY_ID ASC

 

 

12세 이하인 여자 환자 목록 출력하기

IFNULL()

: NULL 이면 다른 값으로 지정할 수 있다. 

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 ASC

 

 

조건에 맞는 도서 리스트 출력하기

SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK
WHERE DATE_FORMAT(PUBLISHED_DATE, '%Y') = '2021'AND CATEGORY = '인문'
ORDER BY PUBLISHED_DATE;

 

 

조건에 맞는 회원수 구하기

COUNT(*)

: 컬럼의 개수를 셀 때 사용한다. 

SELECT COUNT(*) AS USERS
FROM USER_INFO
WHERE DATE_FORMAT(JOINED, '%Y') = '2021' AND AGE >= 20 AND AGE <= 29;

 

 

업그레이드 된 아이템 구하기

이 문제는 잘 모르겠어서 구글링을 해봤다. 

RARITY가 RARE일 때의 ITEM_ID가 PARENT_ITEM_ID 안에 들어있다면 출력해야 한다. 

SELECT I.ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO I JOIN ITEM_TREE T ON I.ITEM_ID = T.ITEM_ID
WHERE T.PARENT_ITEM_ID IN (
                            SELECT ITEM_ID
                            FROM ITEM_INFO
                            WHERE RARITY = 'RARE'
                        )
ORDER BY ITEM_ID DESC;

 

 

 

Python 개발자 찾기

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPER_INFOS
WHERE SKILL_1 = 'Python' OR SKILL_2 = 'Python' OR SKILL_3 = 'Python'
ORDER BY ID;

 

 

조건에 맞는 개발자 찾기

문제에서 주의할 점 : JOIN을 하지 않는다.

CODE와 SKILL_CODE는 다른 숫자이기 때문에 subquery로 가져와서 판단해야한다.

 

SQL에서 비트연산자는 숫자를 2진수로 자동 변환하여 연산을 수행하므로 BIN()과 같은 함수는 사용하지 않아도 된다. 

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPERS
WHERE SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = 'C#')
OR SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = 'Python')
ORDER BY ID;

 

 

 

잔챙이 잡은 수 구하기

SELECT COUNT(*) FISH_COUNT
FROM FISH_INFO
WHERE LENGTH IS NULL;

 

 

가장 큰 물고기 10마리 구하기

LIMIT 10;

10개의 결과만 가져올 수 있다.

이 때, LIMIT 절은 ORDER BY보다 뒤에 작성해야한다. 

SELECT ID, LENGTH 
FROM FISH_INFO 
ORDER BY LENGTH DESC, ID ASC
LIMIT 10;

 

 

 

특정 물고기를 잡은 총 수 구하기

SELECT COUNT(*) FISH_COUNT
FROM FISH_INFO I JOIN FISH_NAME_INFO N ON I.FISH_TYPE = N.FISH_TYPE
WHERE FISH_NAME = 'BASS' OR FISH_NAME = 'SNAPPER';

 

 

 

반응형
저작자표시 (새창열림)

'💾database' 카테고리의 다른 글

[Mysql] 데이터베이스에 이모지(이모티콘) 안들어가는 이슈 해결하기  (1) 2024.04.02
[데이터 베이스] SQL 고급 문법 1 (내장 함수, NULL 값 처리, 부속 질의)  (1) 2023.02.19
[데이터 베이스] SQL 기본 문법 3 (CREATE, ALTER, INSERT, UPDATE, DELETE)  (0) 2023.02.15
[데이터 베이스] SQL 기본 문법 2 (JOIN, SUBQUERY)  (0) 2023.02.15
[데이터 베이스] SQL 기본 문법 1 (SELECT, WHERE, ORDER BY, GROUP BY)  (0) 2023.02.15
  1. 평균 일일 대여 요금 구하기
  2. 흉부외과 또는 일반외과 의사 목록 출력하기
  3. 과일로 만든 아이스크림 고르기
  4. 3월에 태어난 여성 회원 목록 출력하기
  5. 서울에 위치한 식당 목록 출력하기
  6. 조건에 부합하는 중고거래 댓글 조회하기
  7. 인기있는 아이스크림
  8. 강원도에 위치한 생산공장 목록 출력하기
  9. 12세 이하인 여자 환자 목록 출력하기
  10. 조건에 맞는 도서 리스트 출력하기
  11. 조건에 맞는 회원수 구하기
  12. 업그레이드 된 아이템 구하기
  13. Python 개발자 찾기
  14. 조건에 맞는 개발자 찾기
  15. 잔챙이 잡은 수 구하기
  16. 가장 큰 물고기 10마리 구하기
  17. 특정 물고기를 잡은 총 수 구하기
'💾database' 카테고리의 다른 글
  • [Mysql] 데이터베이스에 이모지(이모티콘) 안들어가는 이슈 해결하기
  • [데이터 베이스] SQL 고급 문법 1 (내장 함수, NULL 값 처리, 부속 질의)
  • [데이터 베이스] SQL 기본 문법 3 (CREATE, ALTER, INSERT, UPDATE, DELETE)
  • [데이터 베이스] SQL 기본 문법 2 (JOIN, SUBQUERY)
pkyung
pkyung
pkyung
성장하는 중
pkyung
전체
오늘
어제
  • 분류 전체보기
    • 🏆토이 프로젝트에서 생긴 일
    • 🤿백엔드 내실 채우기
    • 🍫카카오 테크 캠퍼스 2기 BE
    • 🍀spring
      • 스프링 입문
      • 스프링 핵심원리 기본
      • 스프링 jpa
      • 🐛debug
    • 🔒보안
    • 🌎infra
      • docker
      • kubernetes
      • cloud
    • 🌐web
      • HTTP 웹 기본 지식
    • 🔑알고리즘
      • baekjoon
      • programming language
    • 🎞️프로젝트
      • android
      • flutter
    • 📚수업
      • 교양과목
    • 💾database
    • ⚙settings
    • 2023 여름 모각코 - 절개와지조
    • 2024 겨울 모각코 - 내 장점은 algorit..

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스프링기본
  • 카테캠
  • 소수
  • nginx
  • mysql
  • 백준
  • Docker
  • 스프링
  • spring
  • 객체지향
  • 스택
  • BFS
  • python
  • 카카오테크캠퍼스
  • Security
  • sql
  • JPA
  • 코드리뷰
  • 스프링부트
  • 자바문자열
  • 김영한
  • 객체지향의사실과오해
  • 데이터베이스
  • springboot
  • Java
  • 파이썬
  • 문자열
  • HTTP
  • 자바
  • be

최근 댓글

최근 글

hELLO · Designed By 정상우.
pkyung
[프로그래머스 / SQL] SELECT 문 부수기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.