반응형

SQL/MY SQL 문제 풀이(프로그래머스) 74

[MYSQL] PROGRAMMERS_ 5월 식품들의 총매출 조회하기

SELECT p.PRODUCT_ID, p.PRODUCT_NAME, PRICE*sum(AMOUNT) as TOTAL_SALES FROM FOOD_PRODUCT as p, FOOD_ORDER as o WHERE p.PRODUCT_ID = o.PRODUCT_ID AND PRODUCE_DATE like "2022-05%" GROUP BY 1 ORDER BY 3 desc,1 문제 FOOD_PRODUCT와 FOOD_ORDER 테이블에서 생산일자가 2022년 5월인 식품들의 식품 ID, 식품 이름, 총매출을 조회하는 SQL문을 작성후 결과는 총매출을 기준으로 내림차순 정렬해주시고 총매출이 같다면 식품 ID를 기준으로 오름차순 정렬 크게 어려울게 없는 문제이다. 실수를 할 요소가 있다면 SUM(AMOUNT) 이후 *P..

[MYSQL] PROGRAMMERS_식품분류별 가장 비싼 식품의 정보 조회하기

WITH ms as (SELECT CATEGORY,MAX(PRICE) as MXP FROM FOOD_PRODUCT GROUP BY 1) SELECT a.CATEGORY, MAX(PRICE)MAX_PRICE, PRODUCT_NAME FROM FOOD_PRODUCT as a, ms WHERE a.CATEGORY = ms.CATEGORY AND a.CATEGORY in ('과자', '국', '김치', '식용유') AND PRICE = ms.MXP GROUP BY 1 ORDER BY 2 desc 문제 FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과..

[MYSQL] PROGRAMMERS_보호소에서 중성화한 동물

SELECT distinct i.ANIMAL_ID, i.ANIMAL_TYPE, i.NAME FROM ANIMAL_INS as i, ANIMAL_OUTS as o WHERE i.ANIMAL_ID = o.ANIMAL_ID AND i.SEX_UPON_INTAKE like "Intact%" AND o.SEX_UPON_OUTCOME in ("Spayed Female","Neutered Male") ORDER BY 1 문제 보호소에 들어올 당시에는 중성화되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성 어렵지 않은 문제입니다. (최근 제가쓴 게시글을 보니 가독성이 좋지않아 조금 가독성을 높여 보려합니다) 코드를 어떻게 짤까 살짝 고민..

[MYSQL] PROGRAMMERS_대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기

SELECT MONTH(START_DATE)MONTH,CAR_ID,COUNT(CAR_ID) as RECORDS FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE 1=1 AND DATE_FORMAT(START_DATE,'%Y-%m') between '2022-08' and '2022-10' AND CAR_ID in (SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY where 1=1 and DATE_FORMAT(START_DATE,'%Y-%m') between '2022-08' and '2022-10' group by 1 having COUNT(CAR_ID)>=5) GROUP BY 1,2 ORDER BY 1,2 desc 문제 CAR..

[MYSQL] PROGRAMMERS_헤비 유저가 소유한 장소

SELECT ID, NAME, HOST_ID FROM PLACES WHERE HOST_ID in (SELECT HOST_ID FROM PLACES GROUP BY 1 HAVING COUNT(HOST_ID)>=2) ORDER BY 1 문제 이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성 조건 자체가 적어서 어렵지는 않다. 하지만 Where in 에 대한 개념이 조금 부족하면 어려울 수 있다. 일단 공간을 둘 이상 등록 한 사람이다. HOST_ID가 >=2 가 되어야 하는 조건을 가져야 한다 (공간 마다 아이디가 마킹되어 있으므로 아이디의 개수가 곧 공간의 개수). 이 조건을 메인쿼리에서 바로 적용하기는 어려..

[MYSQL] PROGRAMMERS_조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

SELECT CONCAT("/","home/grep/src","/",b.BOARD_ID,"/",FILE_ID,FILE_NAME, FILE_EXT)FILE_PATH FROM USED_GOODS_BOARD as b, USED_GOODS_FILE as f WHERE b.BOARD_ID = f.BOARD_ID AND VIEWS = (SELECT MAX(VIEWS) FROM USED_GOODS_BOARD) order by FILE_ID desc 문제 USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬. 기본적인 파일경로는 /home/grep/src/ 이며..

[MYSQL] PROGRAMMERS_자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

SELECT CAR_ID, CASE WHEN CAR_ID in (SELECT CAR_ID FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE "2022-10-16" Between START_DATE and END_DATE) THEN "대여중" else "대여 가능" end AVAILABILITY FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY GROUP BY 1 ORDER BY 1 desc 문제 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 2022년 10월 16일에 대여 중인 자동차인 경우 '대여중' 이라고 표시하고, 대여 중이지 않은 자동차인 경우 '대여 가능'을 표시하는 컬럼(컬럼명: AVAILABILITY)을 추가하여 자동..

[MYSQL] PROGRAMMERS_조건에 맞는 사용자 정보 조회하기

SELECT USER_ID, NICKNAME, CONCAT(CITY,' ',STREET_ADDRESS1,' ',STREET_ADDRESS2) as 전체주소, CONCAT(left(TLNO,3),'-',mid(TLNO,4,4),'-',right(TLNO,4))전화번호 FROM USED_GOODS_BOARD as b, USED_GOODS_USER as u WHERE b.WRITER_ID = u.USER_ID GROUP BY 1 HAVING COUNT(USER_ID) >=3 ORDER BY 1 desc 문제 USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 중고 거래 게시물을 3건 이상 등록한 사용자의 사용자 ID, 닉네임, 전체주소, 전화번호를 조회하는 SQL문을 작성후 전체 주소는 시..

[MYSQL] PROGRAMMERS_없어진 기록 찾기

SELECT o.ANIMAL_ID, o.NAME FROM ANIMAL_INS as i right join ANIMAL_OUTS as o USING (ANIMAL_ID) WHERE 1=1 AND i.ANIMAL_ID IS NULL AND o.ANIMAL_ID IS NOT NULL ORDER BY 1 문제 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성 입양을 간 기록은 있는데 보호소에 들어온 기록이 없는 동물이라면 ANIMAL_OUT의 데이터는 존재하되 ANIMAL_INS의 데이터는 없어야 한다. 원래는 위의 두 데이터가 완벽하게 일치하여 모든 부분이 핑크색이 되거나 ANIMAL OUT이 ANIMAL IN 안에 포함되어 있어야 정상이지만 데..

[MYSQL] PROGRAMMERS_즐겨찾기가 가장 많은 식당 정보 출력하기

WITH a as (select FOOD_TYPE, MAX(FAVORITES)as MX FROM REST_INFO GROUP BY 1) SELECT r.FOOD_TYPE, r.REST_ID, r.REST_NAME, r.FAVORITES FROM REST_INFO as r, a WHERE r.FOOD_TYPE = a.FOOD_TYPE AND r.FAVORITES= a.MX GROUP BY 1 ORDER BY 1 desc 문제 REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성 후 결과는 음식 종류를 기준으로 내림차순 정렬 이문제 스트레스 좀 많이 받은 것 같습니다.. 일단 중점은 MAX의 사용, 그리고 서브쿼리의 사용..

반응형