기본 콘텐츠로 건너뛰기

3월, 2023의 게시물 표시

코딩 테스트 - 오랜 기간 보호한 동물(2)

--Mysql SELECT A. ANIMAL_ID , A. NAME FROM ANIMAL_INS A , ANIMAL_OUTS B WHERE A. ANIMAL_ID = B. ANIMAL_ID ORDER BY B. DATETIME - A. DATETIME DESC LIMIT 2 --Oracle SELECT ANIMAL_ID , NAME FROM ( SELECT A. ANIMAL_ID , A. NAME FROM ANIMAL_INS A JOIN ANIMAL_OUTS B ON A. ANIMAL_ID = B. ANIMAL_ID ORDER BY B. DATETIME - A. DATETIME DESC ) WHERE ROWNUM <= 2

코딩 테스트 - 서울에 위치한 식당 목록 출력하기

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

코딩 테스트 - 식품분류별 가장 비싼 식품의 정보 조회하기

--Mysql SELECT CATEGORY , PRICE AS MAX_PRICE , PRODUCT_NAME FROM ( SELECT CATEGORY , ROW_NUMBER() OVER ( PARTITION BY CATEGORY ORDER BY PRICE DESC ) AS RANKING , PRODUCT_NAME , PRICE FROM FOOD_PRODUCT WHERE CATEGORY IN ( ' 과자 ' , ' 국 ' , ' 김치 ' , ' 식용유 ' ) ORDER BY PRICE DESC ) AS TEMP WHERE RANKING = '1' ORDER BY PRICE DESC -- Oracle SELECT CATEGORY , PRICE AS MAX_PRICE , PRODUCT_NAME FROM FOOD_PRODUCT WHERE ( CATEGORY , PRICE ) IN ( SELECT CATEGORY , MAX ( PRICE ) FROM FOOD_PRODUCT WHERE CATEGORY IN ( ' 과자 ' , ' 국 ' , ' 김치 ' , ' 식용유 ' ) GROUP BY CATEGORY ) ORDER BY MAX_PRICE DESC;

코딩 테스트 - 조건에 맞는 도서 리스트 출력하기

-- Mysql SELECT BOOK_ID , DATE_FORMAT( PUBLISHED_DATE , '%Y-%m-%d' ) AS PUBLISHED_DATE FROM BOOK WHERE CATEGORY = ' 인문 ' AND YEAR (PUBLISHED_DATE) = 2021 ORDER BY PUBLISHED_DATE ; --Oracle SELECT BOOK_ID , TO_CHAR( PUBLISHED_DATE , 'YYYY-MM-DD' ) PUBLISHED_DATE FROM BOOK WHERE CATEGORY = ' 인문 ' AND TO_CHAR( PUBLISHED_DATE , 'YYYY' ) = '2021' ORDER BY PUBLISHED_DATE ASC;

코딩 테스트 - 조건에 부합하는 중고거래 댓글 조회하기

-- Oracle SELECT B. TITLE AS TITLE , B. BOARD_ID AS BOARD_ID , R. REPLY_ID AS REPLY_ID , R. WRITER_ID AS WRITER_ID , R. CONTENTS AS CONTENTS , TO_CHAR(R. CREATED_DATE , 'yyyy-mm-dd' ) AS CREATED_DATE FROM USED_GOODS_BOARD B , USED_GOODS_REPLY R WHERE B. BOARD_ID = R. BOARD_ID AND B. CREATED_DATE BETWEEN TO_DATE( '2022-10-01' , 'yyyy-mm-dd' ) AND TO_DATE( '2022-10-31' , 'yyyy-mm-dd' ) ORDER BY R. CREATED_DATE ASC, B. TITLE ASC --Mysql SELECT B. TITLE AS TITLE , B. BOARD_ID AS BOARD_ID , R. REPLY_ID AS REPLY_ID , R. WRITER_ID AS WRITER_ID , R. CONTENTS AS CONTENTS , DATE_FORMAT(R. CREATED_DATE , '%Y-%m-%d' ) as CREATED_DATE FROM USED_GOODS_BOARD B JOIN USED_GOODS_REPLY R ON B. BOARD_ID = R. BOARD_ID WHERE B. CREATED_DATE LIKE '2022-10%' ORDER BY R. CREATED_DATE ASC, B. TITLE ASC

코딩 테스트 - 중성화 여부 파악하기

--Mysql SELECT ANIMAL_ID , NAME , CASE WHEN ( SEX_UPON_INTAKE LIKE '%NEUTERED%' OR SEX_UPON_INTAKE LIKE '%SPAYED%' ) THEN 'O' ELSE 'X' END AS ' 중성화 ' FROM ANIMAL_INS ORDER BY ANIMAL_ID ASC -Oracle SELECT ANIMAL_ID , NAME , CASE WHEN SEX_UPON_INTAKE LIKE 'Neutered%' OR SEX_UPON_INTAKE LIKE 'Spayed%' THEN 'O' ELSE 'X' END AS 중성화 FROM ANIMAL_INS ORDER BY ANIMAL_ID ;

코딩 테스트 - 경기도에 위치한 식품창고 목록 출력하기

--MySQL SELECT WAREHOUSE_ID , WAREHOUSE_NAME , ADDRESS , IF( FREEZER_YN IS NULL, 'N' , FREEZER_YN ) AS FREEZER_YN FROM FOOD_WAREHOUSE WHERE ADDRESS LIKE ' 경기도 %' --Oracle SELECT WAREHOUSE_ID , WAREHOUSE_NAME , ADDRESS , NVL( FREEZER_YN , 'N' ) AS FREEZER_YN FROM FOOD_WAREHOUSE WHERE ADDRESS LIKE '% 경기도 %' ORDER BY WAREHOUSE_ID

코딩 테스트 - NULL 처리하기

--MySQL SELECT ANIMAL_TYPE , IFNULL( NAME , 'No name' ) AS NAME, SEX_UPON_INTAKE FROM ANIMAL_INS --Oracle SELECT ANIMAL_TYPE , NVL( NAME , 'No name' ) AS NAME, SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID ; SELECT ANIMAL_TYPE , DECODE( NAME , NULL, 'No name' , NAME ) AS NAME, SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID ;

코딩 테스트 - 자동차 대여 기록에서 장기/단기 대여 구분하기

--Oracle SELECT HISTORY_ID , CAR_ID , TO_CHAR( START_DATE , 'YYYY-MM-DD' ) AS START_DATE , TO_CHAR( END_DATE , 'YYYY-MM-DD' ) AS END_DATE , CASE WHEN END_DATE - START_DATE + 1 >= 30 THEN ' 장기 대여 ' ELSE ' 단기 대여 ' END AS RENT_TYPE FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE TO_CHAR( START_DATE , 'YYYYMM' ) = '202209' ORDER BY HISTORY_ID DESC; --MySQL SELECT HISTORY_ID , CAR_ID , DATE_FORMAT( START_DATE , '%Y-%m-%d' ) AS START_DATE , DATE_FORMAT( END_DATE , '%Y-%m-%d' ) AS END_DATE , CASE WHEN DATEDIFF( END_DATE , START_DATE ) + 1 >= 30 THEN " 장기 대여 " ELSE " 단기 대여 " END AS RENT_TYPE FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY WHERE START_DATE BETWEEN '202

코딩 테스트 - 우유와 요거트가 담긴 장바구니

--Oracle SELECT CART_ID FROM CART_PRODUCTS WHERE NAME = 'Milk' INTERSECT SELECT CART_ID FROM CART_PRODUCTS WHERE NAME = 'Yogurt' ORDER BY CART_ID ; --Mysql SELECT DISTINCT C . CART_ID FROM CART_PRODUCTS C, CART_PRODUCTS T WHERE C . CART_ID = T. CART_ID AND ( C . NAME = 'Milk' AND T. NAME = 'Yogurt' ) ORDER BY C . CART_ID ; -- Both SELECT CART_ID FROM CART_PRODUCTS WHERE CART_ID IN ( SELECT CART_ID FROM CART_PRODUCTS WHERE NAME = 'Milk' ) AND NAME = 'Yogurt' ORDER BY CART_ID ;

코딩 테스트 - 취소되지 않은 진료 예약 조회하기

--MYSQL SELECT APP. APNT_NO , P. PT_NAME , P. PT_NO , D. MCDP_CD , D. DR_NAME , APP. APNT_YMD FROM APPOINTMENT APP JOIN PATIENT P ON APP. PT_NO = P. PT_NO JOIN DOCTOR D on APP. MDDR_ID = D. DR_ID where D. MCDP_CD = "CS" AND APP. APNT_YMD LIKE "%2022-04-13%" AND APP. APNT_CNCL_YN = "N" ORDER BY APP. APNT_YMD ; --ORACLE SELECT APP. APNT_NO , P. PT_NAME , P. PT_NO , D. MCDP_CD , D. DR_NAME , APP. APNT_YMD FROM APPOINTMENT APP JOIN PATIENT P ON APP. PT_NO = P. PT_NO JOIN DOCTOR D on APP. MDDR_ID = D. DR_ID WHERE TO_CHAR(APP. APNT_YMD , 'YYYYMMDD' ) = '20220413' AND APP. APNT_CNCL_YN = 'N' AND APP. APNT_CNCL_YMD IS NULL ORDER BY APP. APNT_YMD

코딩 테스트 - 5월 식품들의 총매출 조회하기

--MYSQL SELECT O. PRODUCT_ID AS PRODUCT_ID , P. PRODUCT_NAME AS PRODUCT_NAME , (PRICE* SUM (AMOUNT)) AS TOTAL_SALES FROM FOOD_ORDER O JOIN FOOD_PRODUCT P ON O. PRODUCT_ID = P. PRODUCT_ID WHERE YEAR (PRODUCE_DATE) = 2022 AND MONTH (PRODUCE_DATE) = 5 GROUP BY PRODUCT_ID ORDER BY TOTAL_SALES DESC, PRODUCT_ID ; --ORACLE SELECT P. PRODUCT_ID AS PRODUCT_ID , P. PRODUCT_NAME AS PRODUCT_NAME , (P. PRICE * O.AMOUNT) AS TOTAL_SALES FROM FOOD_PRODUCT P JOIN ( SELECT PRODUCT_ID , SUM ( AMOUNT ) AS AMOUNT FROM FOOD_ORDER WHERE TO_CHAR( PRODUCE_DATE , 'YYYYMM' ) = '202205' GROUP BY PRODUCT_ID ) O ON P. PRODUCT_ID = O. PRODUCT_ID ORDER BY TOTAL_SALES DESC, PRODUCT_ID ;

코딩 테스트 - 디스크 컨트롤러

package programmers ; import java.util.Arrays ; import java.util.PriorityQueue ; public class 디스크 _ 컨트롤러 _230316 { /* 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다 . 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다 . 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다 . 예를들어 - 0ms 시점에 3ms 가 소요되는 A 작업 요청 - 1ms 시점에 9ms 가 소요되는 B 작업 요청 - 2ms 시점에 6ms 가 소요되는 C 작업 요청 와 같은 요청이 들어왔습니다 . 이를 그림으로 표현하면 아래와 같습니다 . Screen Shot 2018-09-13 at 6.34.58 PM.png 한 번에 하나의 요청만을 수행할 수 있기 때문에 각각의 작업을 요청받은 순서대로 처리하면 다음과 같이 처리 됩니다 . Screen Shot 2018-09-13 at 6.38.52 PM.png - A: 3ms 시점에 작업 완료 ( 요청에서 종료까지 : 3ms) - B: 1ms 부터 대기하다가 , 3ms 시점에 작업을 시작해서 12ms 시점에 작업 완료 ( 요청에서 종료까지 : 11ms) - C: 2ms 부터 대기하다가 , 12ms 시점에 작업을 시작해서 18ms 시점에 작업 완료 ( 요청에서 종료까지 : 16ms) 이 때 각 작업의 요청부터 종료까지 걸린 시간의 평균은 10ms(= (3 + 11 + 16) / 3) 가 됩니다 . 하지만 A → C → B 순서대로 처리하면 Screen Shot 2018-09-13 at 6.41.42 PM.png - A: 3ms 시점에 작업 완료 ( 요청에서 종료까지 : 3ms) - C: 2ms 부터 대기하다가 , 3ms 시점에 작업을 시작해서 9ms 시점에 작업 완료

코딩 테스트 - 섬 연결하기

package programmers ; import java.util.ArrayList ; import java.util.Arrays ; import java.util.List ; public class 섬 _ 연결하기 _230315 { /* n 개의 섬 사이에 다리를 건설하는 비용 (costs) 이 주어질 때 , 최소의 비용으로 모든 섬이 서로 통행 가능하도록 만들 때 필요한 최소 비용을 return 하도록 solution 을 완성하세요 . 다리를 여러 번 건너더라도 , 도달할 수만 있으면 통행 가능하다고 봅니다 . 예를 들어 A 섬과 B 섬 사이에 다리가 있고 , B 섬과 C 섬 사이에 다리가 있으면 A 섬과 C 섬은 서로 통행 가능합니다 . 제한사항 섬의 개수 n 은 1 이상 100 이하입니다 . costs 의 길이는 ((n-1) * n) / 2 이하입니다 . 임의의 i 에 대해 , costs[i][0] 와 costs[i] [1] 에는 다리가 연결되는 두 섬의 번호가 들어있고 , costs[i] [2] 에는 이 두 섬을 연결하는 다리를 건설할 때 드는 비용입니다 . 같은 연결은 두 번 주어지지 않습니다 . 또한 순서가 바뀌더라도 같은 연결로 봅니다 . 즉 0 과 1 사이를 연결하는 비용이 주어졌을 때 , 1 과 0 의 비용이 주어지지 않습니다 . 모든 섬 사이의 다리 건설 비용이 주어지지 않습니다 . 이 경우 , 두 섬 사이의 건설이 불가능한 것으로 봅니다 . 연결할 수 없는 섬은 주어지지 않습니다 . 입출력 예 n costs return 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 입출력 예 설명 costs 를 그림으로 표현하면 다음과 같으며 , 이때 초록색 경로로 연결하는 것이 가장 적은 비용으로 모두를 통행할 수 있도록 만드는 방법입니다 .