프로그래머스 SQL 고득점 Kit 연습풀이입니다. 모든 문제의 저작권은 프로그래머스에게 있으며 문제가 됐을 시 삭제하겠습니다.
https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit
문제순서
1. 조건에 맞는 도서 리스트 출력하기
2.조건에 부합하는 중고 거래 댓글 조회하기
3. 흉부외과 또는 일반외과 의사
4. 과일로 만든 아이스크림 고르기
5. 평균일일대여 구하기
6. 인기있는아이스크림
7. 강원도에 있는 생산공산 출력
8. 12세 이하인 여자 환자 목록
4. 목ㅇ록 5 ㅇ
문제이름: 조건에 맞는 도서 리스트 출력하기
https://school.programmers.co.kr/learn/courses/30/lessons/144853
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이내역
1) 기본 select - from - where - order 문으로 구성된 문항이다.
2) select 에서 문제에서 추출할 도서 id, 날짜를 입력한다.
이때 날짜는 DATE_FORMAT(컬럼이름, 바꿀 형식) 형식을 사용한다.
보기에서 년-월-일 고르라고 했으므로 형식은 '%Y-%m-%d' 이다.
3) WHERE 절에서는 YEAR()을 이용해서 조건에 맞는 열을 추출한다,
4) ORDER BY에서는 정렬 기준을 선택한다.
코드
SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE
FROM BOOK
WHERE YEAR(PUBLISHED_DATE) = 2021 AND CATEGORY = '인문'
ORDER BY PUBLISHED_DATE ASC;
문제이름: 조건에 부합하는 중고 거래 댓글 조회하기
https://school.programmers.co.kr/learn/courses/30/lessons/164673
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
1) 기본 select - from(join) - where - order 문으로 구성된 문항이다.
2) join문제가 나오면 테이블 이름을 간소화하고 공통 열을 찾아 조인을 먼저 해준다.
테이블1 AS A inner join 테이블2 as B
ON A.열 = B.열
3) select 에서 문제에서 추출할 제목, id, title, content 를 추출한다. 이때 테이블에 중복되는 항이 있으므로
테이블(A/B). 칼럼 이름으로 추출해야 한다.
4) WHERE 절에서는 YEAR(), MONTH()을 이용해서 조건에 맞는 열을 추출한다,
4) ORDER BY에서는 정렬 기준을 선택한다
코드
SELECT A.TITLE, A.BOARD_ID, B.REPLY_ID, B.WRITER_ID, B.CONTENTS,
DATE_FORMAT(B.CREATED_DATE, "%Y-%m-%d") as CREATED_DATE
FROM USED_GOODS_BOARD AS A INNER JOIN USED_GOODS_REPLY AS B
ON A.BOARD_ID = B.BOARD_ID
WHERE YEAR(A.CREATED_DATE) = 2022 AND MONTH(A.CREATED_DATE)=10
ORDER BY B.CREATED_DATE ASC, A.TITLE ASC;
https://school.programmers.co.kr/learn/courses/30/lessons/132203
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
1) 기본 select - from(join) - where - order 문으로 구성된 문항이다.
2) select 에서 문제에서 추출할 열를 추출한다. 첫번째 문제와 동일하게 날짜형식이 있는 문항으로 주의해야 한다.
3) WHERE 절에서는 열에 포함될 추출되는 글자들(CS, GS)을 이용하므로 IN을 사용한다.
하나인 경우 = 을 사용해도 무관하다
4) ORDER BY에서는 정렬 기준을 선택한다
전체코드
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, "%Y-%m-%d") as HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD IN("CS", "GS")
ORDER BY HIRE_YMD DESC, DR_NAME ASC;
문제이름: 과일로 만든 아이스크림 고르기
https://school.programmers.co.kr/learn/courses/30/lessons/133025
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
1) select-from-where-oreder by 로 이루어진 문항이다
2) 정답 결과 예시를 보고 select 들어갈 것을 유추한다(flavor) >> 이때 flavor은 두 테이블당 공통키이므로 어떤 테이블의 열인지 명시해줘야 한다.
3) join할 때 위에 언급했던 것처럼 테이블 이름 간소화 + inner join + on으로 공통항 체크
4) where 절에는 들어갈 조건을 써준다 // 2가지 다 만족해야하므로 and
5) order by 문에서 내림차순 정렬
전체코드:
SELECT A.FLAVOR
FROM FIRST_HALF AS A INNER JOIN ICECREAM_INFO AS B
ON A.FLAVOR=B.FLAVOR
WHERE A.TOTAL_ORDER >=3000
AND B.INGREDIENT_TYPE = "fruit_based"
ORDER BY TOTAL_ORDER DESC;
문제이름: 평균일일대여 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/151136
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
1) select-from-where 문장이다.
2) 평균을 구하는 코드는 avg
3) 반올림하는 코드는 round(대상, 자리수) >> 첫번째자리까지 반올림함으로 했으므로 0을 입력하거나 입력하지 않음
4) where절에는 조건을 넣어주면 끝!
전체코드
SELECT ROUND(AVG(DAILY_FEE)) AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = "SUV"
문제이름: 인기있는아이스크림
https://school.programmers.co.kr/learn/courses/30/lessons/133024
문제풀이
1) select-from-order by 문장이다
2) 정답예시결과를 보고 select에 들어갈 flavor를 추출
3) 정렬 기준을 보고 순서대로 정렬완료. asc 가 기본임으로 궁디 안써도 되긴한다
전체코드
select flavor
from first_half
order by total_order desc, shipment_id asc
문제이름: 강원도에 있는 생산공산 출력
https://school.programmers.co.kr/learn/courses/30/lessons/131112
문제풀이
1) select-from-where-order by 문장이다
2) 정답 결과를 보고 select 문에 들어갈 부분을 단순 추출한다
3) 조건절에 강원도가 들어가 있는 칼럼을 뽑아야한다.
like 연산자를 사용하면 해당하는 단어만 있으면 검색을 할 수 있습니다. %는 여러글자, _ 는 한글자로 인식합니다.
4) order by에는 정렬 기준에 맞게 작성합니다.
전체코드
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '강원도%'
ORDER BY FACTORY_ID
문제이름: 12세 이하인 여자 환자 목록
https://school.programmers.co.kr/learn/courses/30/lessons/132201
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
1) select - from - where - roder by 문장이다.
2) ~ 값이 null 이면 none으로 출력해라 >>> IFNULL(열이름, "바꿀이름")
3) where 절에는 나이, 성별 조건을 적어준다.
4) order by 절에는 정렬 기준을 적어준다.
전체코드
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO,"NONE") AS TLNO
FROM PATIENT
WHERE AGE<=12 AND GEND_CD="W"
ORDER BY AGE DESC, PT_NAME
'[코테준비] > [코테준비]SQL' 카테고리의 다른 글
SQL고득점KIT-Select Lv4.5 (0) | 2024.07.14 |
---|---|
SQL 고득점 kit - Select Lv3 (1) | 2024.07.12 |
SQL 고득점 Kit - SELECT Lv2 (1) | 2024.07.09 |
SQL 고득점 Kit - SELECT Lv1(2) (1) | 2024.07.07 |
SQL 할 때 매일 헷갈린다면? (0) | 2024.07.04 |