[프로그래머스 SQL] Select

allnight5·2023년 1월 26일
0

프로그래머스SQL

목록 보기
4/19

평균 일일 대여 요금 구하기


정답:

SELECT floor(avg(daily_fee)) as AVERAGE_FEE 
from car_rental_company_car
where car_type = "SUV"

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

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

SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE,"%Y-%m-%d") as DATE_FORMAT from BOOK
where CATEGORY = "인문" and year(PUBLISHED_DATE) ="2021"
order by PUBLISHED_DATE ASC

아픈 동물 찾기

동물 보호소에 들어온 동물 중 아픈 동물1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.

SELECT ANIMAL_ID, NAME from ANIMAL_INS
where INTAKE_CONDITION = "Sick"

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

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

기본적으로 ASC인데 맨앞 컬럼을 기준으로 오름차순 정렬되니 다른 곳이라면 그것을 기준으로 한다고 order by를 해줘야 한다.

SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY
where ADDRESS like "%강원도%"

SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY
where ADDRESS like "%강원도%"
order by FACTORY_ID ASC

재구매가 일어난 상품과 회원 리스트 구하기

ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬해주세요.

SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE
group by 1, 2 
# USER_ID, PRODUCT_ID groupby로 하면서 
#이름을 간단히 하거나 as로 처음부터 간단히해서 넘겨줄수도있다.
having count(PRODUCT_ID) > 1
order by 1 ASC, 2 DESC # USER_ID ASC, PRODUCT_ID DESC

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

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

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

12세이하 50세 이하등 이하일때 차라리 헷갈리지 않게 1더 큰수를 쓰거나 =을 잊어버리지 말도록 하자

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 ASC

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

MEMBER_PROFILE 테이블에서 생일이 3월인 여성 회원의 ID, 이름, 성별, 생년월일을 조회하는 SQL문을 작성해주세요. 이때 전화번호가 NULL인 경우는 출력대상에서 제외시켜 주시고, 결과는 회원ID를 기준으로 오름차순 정렬해주세요.

SELECT Member_id, Member_name, GENDER, DATE_FORMAT(DATE_OF_BIRTH, "%Y-%m-%d")as DATE_OF_BIRTH from MEMBER_PROFILE
where MONTH(DATE_OF_BIRTH) = 03 and GENDER = "W" and TLNO is not null
order by Member_id

인기있는 아이스크림

내용을 처음부터 잘 읽어보자

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

SELECT FLAVOR from FIRST_HALF
order by TOTAL_ORDER DESC, SHIPMENT_ID ASC

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

상반기 아이스크림 총주문량이 3,000보다 높으면서 아이스크림의 주 성분이 과일인 아이스크림의 맛을 총주문량이 큰 순서대로 조회하는 SQL 문을 작성해주세요.

SELECT FI.FLAVOR from FIrst_half FI, Icecream_info IC
where FI.FLAVOR= IC.FLAVOR and FI.TOTAL_ORDER > 3000 and IC.INGREDIENT_TYPE = "fruit_based"

상위 n개 레코드

가장 처음 들어온 동물의 이름을 나타내 주세요

SELECT NAME from animal_ins
order by DATETIME
limit 1

조건에 맞는 회원수 구하기

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

예시가 3개라서 틀린줄 알고 정답 안눌렀었는데 틀린게 없는데 하고 고민하다가 제출해보니 맞은 답이였다..

SELECT count(USER_ID) as USERS from USER_INFO 
where Year(JOINED) ="2021" and age > 19 and age < 30

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

REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.

첫번째

SELECT ri.REST_ID, ri.REST_NAME, ri.FOOD_TYPE, ri.FAVORITES, ri.ADDRESS, round(avg(rr.REVIEW_SCORE), 2) as SCORE from REST_INFO ri, Rest_REVIEW rr
where ri.Rest_Id = rr.rest_id and ri.ADDRESS like "서울%"
GROUP BY ri.REST_ID
order by SCORE DESC, FAVORITES DESC

두번째

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

오프라인/온라인 판매 데이터 통합하기

ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력하는 SQL문을 작성해주세요. OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요. 결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요.

SELECT *from
(SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") as SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT from ONLINE_SALE
where date_format(SALES_DATE, "%Y-%m") like "2022-03"
UNION ALL

SELECT     
 date_format(SALES_DATE, '%Y-%m-%d') as SALES_DATE,
    PRODUCT_ID,
    CASE WHEN OFFLINE_SALE_ID is not null then null
    END AS USER_ID,
    SALES_AMOUNT 
FROM OFFLINE_SALE T1

WHERE DATE_FORMAT(T1.sales_date, '%Y-%m') like '2022-03'
 ) as table2
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID
profile
공부기록하기

0개의 댓글