깡뇽

[프로그래머스] SQL High Score Kit - SELECT (2) 본문

Computer Language/SQL

[프로그래머스] SQL High Score Kit - SELECT (2)

깡뇽 2024. 5. 11. 11:52
반응형

풀지 않았던 나머지 SELECT 유형 풀기..!

 

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

문제 : `BOOK` 테이블에서 2021년에 출판된 '인문' 카테고리에 속하는 도서 ID, 출판일 조회

- 출판일 기준 오름차순 정렬

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

 

DATE_FORMAT(날짜데이터, 형식)

 

조건에 맞는 회원수 구하기

문제 : `USER_INFO` 테이블에서 2021년에 가입한 회원 중 20세 이상 29세 이하 회원 수 조회

SELECT COUNT(*) AS USERS FROM USER_INFO WHERE YEAR(JOINED) = 2021 AND AGE >= 20 AND AGE <= 29;

 

 

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

문제 : `USED_GOODS_BOARD` 테이블과 `USED_GOODS_REPLY` 테이블에서 2022년 10월에 작성된 게스글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일 조회

- 댓글 작성일 기준 오름차순, 게시글 제목 기준 오름차순 정

SELECT B.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 B, USED_GOODS_REPLY R
WHERE B.BOARD_ID = R.BOARD_ID AND YEAR(B.CREATED_DATE) = 2022 AND MONTH(B.CREATED_DATE) = 10
ORDER BY R.CREATED_DATE ASC, B.TITLE ASC;

 

JOIN 다른 문법 : FROM USED_GOODS_BOARD B JOIN USED_GOODS_REPLY R USING(BOARD_ID)

DATE 비교 다른 문법 : WHERE B.CREATED_DATE LIKE '2022-10%'

*주의) 게시글 테이블과 댓글 테이블 중에서 어떤 테이블의 정보를 가져와야 하는 것인지 헷갈리지 않도록!

 

 

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

문제 : `DOCTOR` 테이블에서 진료과 CS 또는 GS인 의사의 이름, 의사ID, 진료과, 고용일자 조회

- 고용일자 기준 내림차순 정렬, 이름 기준 오름차순 정렬

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;

 

 

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

문제 : `상반기 아이스크림 총주문량 3,000보다 높으면 아이스크림의 주 성분이 과일인 아이스크림의 맛을 총주문량이 큰 순서대로 조회

SELECT FLAVOR FROM FIRST_HALF FH JOIN ICECREAM_INFO II USING(FLAVOR)
WHERE FH.TOTAL_ORDER > 3000 AND II.INGREDIENT_TYPE = 'fruit_based';

 

 

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

문제 : `FOOD_FACTORY` 테이블에서 강원도에 위치한 식품공장의 공장ID, 공장 이름, 주소 조회

- 공장 ID 기준 오름차순 정렬

SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY WHERE ADDRESS LIKE "%강원도%";

 

 

Python 개발자 찾기

문제 : `DEVELOPER_INFOS` 테이블에서 Python 스킬을 가진 개발자의 ID, 이메일, 이름 , 성 조회

- ID 기준 오름차순 정렬

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;

 

 

잔챙이 잡은 수 구하기

문제 : 잡은 물고기 중 길이가 10cm 이하인 물고기의 수 출력

- 테이블에는 물고기의 길이가 10cm 이하일 경우에는 LENGTH가 NULL로 표시

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

 

 

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

문제 : `FISH_INFO` 테이블에서 가장 큰 물고기 10마리의 ID와 길이 출력

- 길이 기준 내림차순, ID 기준 오름차순 정렬

- 가장 큰 물고기가 10마리 중 길이가 10cm 이하인 경우는 없음

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

LIMIT : 제한

 

 

특정 형질을 가지는 대장균 찾기

문제 : 2번 형질은 보유하지 않으면서 1번이나 3번 형질을 보유하고 있는 대장균 개체의 수 출력

- 1번 형질 : 1(2진수) -> 1

- 2번 형질 : 10(2진수) -> 2

- 3번 형질 : 100(2진수) -> 4

SELECT COUNT(*) AS COUNT FROM ECOLI_DATA
WHERE (GENOTYPE & 1 OR GENOTYPE & 4) AND !(GENOTYPE & 2);

 

반응형