기본 콘텐츠로 건너뛰기

글

코딩 테스트 - 배열의 평균값

package programmers ; import java.util.Arrays ; class 배열의 _ 평균값 _230512 { public double solution ( int [] numbers) { double answer = 0 ; for ( int i = 0 ; i < numbers. length ; i++) { answer += numbers[i] ; } return answer/numbers. length ; } public double solution2 ( int [] numbers) { //average() 는 double 을 반환하므로 orElse() 를 통해 0 을 반환하도록 설정 //orElse() 는 Optional 객체가 비어있을 경우에만 실행 return Arrays. stream (numbers).average().orElse( 0 ) ; } }

코딩 테스트 - 각도기

package programmers; public class 각도기_230509 {     public int solution ( int angle ) {         int answer = 0 ;         if (angle == 90 ){            answer = 2 ;        } else if (angle < 90 ){            answer = 1 ;        } else if (angle == 180 ){            answer = 4 ;        } else {            answer = 3 ;        }         return answer;     }     public int sol2 ( int angle ){         return angle == 180 ? 4 : angle < 90 ? 1 : angle == 90 ? 2 : angle > 90 ? 3 : 0 ;     } }

코딩 테스트 - 자동차 대여 기록 별 대여 금액 구하기

--Mysql SELECT HISTORY_ID , ROUND(( DAILY_FEE * ( 100 - IFNULL(DISCOUNT_RATE , 0 )) / 100 ) * PERIOD ) AS FEE FROM ( SELECT CAR. CAR_ID , CAR. CAR_TYPE , DAILY_FEE , HISTORY_ID , TIMESTAMPDIFF( DAY, START_DATE , END_DATE) + 1 AS PERIOD, CASE WHEN TIMESTAMPDIFF( DAY, START_DATE , END_DATE) + 1 >= 90 THEN '90 일 이상 ' WHEN TIMESTAMPDIFF( DAY, START_DATE , END_DATE) + 1 >= 30 THEN '30 일 이상 ' WHEN TIMESTAMPDIFF( DAY, START_DATE , END_DATE) + 1 >= 7 THEN '7 일 이상 ' ELSE '7 일 미만 ' END AS DURATION_TYPE FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY AS HISTORY INNER JOIN CAR_RENTAL_COMPANY_CAR AS CAR ON CAR. CAR_ID...

코딩 테스트 - 상품을 구매한 회원 비율 구하기

--Mysql SELECT YEAR, MONTH, COUNT (*) AS PUCHASED_USERS , ROUND(( COUNT (*) / ( SELECT COUNT (*) FROM USER_INFO WHERE YEAR (JOINED) = 2021 )) , 1 ) AS PUCHASED_RATIO FROM ( SELECT DISTINCT YEAR (S.SALES_DATE) AS YEAR, MONTH (S.SALES_DATE) AS MONTH, U.USER_ID FROM ONLINE_SALE S JOIN USER_INFO U ON S.USER_ID = U.USER_ID AND YEAR (JOINED) = 2021 ) O GROUP BY YEAR, MONTH ORDER BY YEAR, MONTH --Oracle SELECT DISTINCT YEAR, MONTH, PUCHASED_USERS , ROUND(PUCHASED_USERS / ( SELECT COUNT (*) FROM USER_INFO WHERE TO_CHAR(JOINED , 'YYYY' )= '2021' ) , 1 ) PUCHASED_RATIO FROM ( SELECT TO_NUMBER(TO_CHAR(S.SALES_DATE , 'YYYY' )) YEAR, TO_NUMBER(TO_CHAR(S.SALES_DATE , 'FMMM' )) MONTH, COUNT ( DISTINCT U.USER_ID) OVER ( PARTITION BY TO_CHAR(S.SALES_DATE , 'YYYY' ) , TO_CHAR...

코딩 테스트 - 그룹별 조건에 맞는 식당 목록 출력하기

--Mysql SELECT M. MEMBER_NAME , R. REVIEW_TEXT , DATE_FORMAT(R. REVIEW_DATE , '%Y-%m-%d' ) AS REVIEW_DATE FROM MEMBER_PROFILE M JOIN REST_REVIEW R ON M. MEMBER_ID = R. MEMBER_ID WHERE M. MEMBER_ID IN ( SELECT MEMBER_ID FROM REST_REVIEW GROUP BY MEMBER_ID HAVING COUNT ( MEMBER_ID ) = ( SELECT COUNT ( REVIEW_TEXT ) AS 'NUM' FROM REST_REVIEW GROUP BY MEMBER_ID ORDER BY NUM DESC LIMIT 1 )) ORDER BY R.REVIEW_DATE , R.REVIEW_TEXT --Oracle SELECT M. MEMBER_NAME , R. REVIEW_TEXT , TO_CHAR(R. REVIEW_DATE , 'yyyy-mm-dd' ) REVIEW...

코딩 테스트 - 저자 별 카테고리 별 매출액 집계하기

--Mysql SELECT     A . AUTHOR_ID , #저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력     AUTHOR_NAME,     CATEGORY,     SUM ((SALES * PRICE)) AS TOTAL_SALES #저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하여 FROM     BOOK_SALES S     JOIN         BOOK B         ON S . BOOK_ID = B . BOOK_ID     JOIN         AUTHOR A         ON B . AUTHOR_ID = A . AUTHOR_ID WHERE     YEAR ( S . SALES_DATE ) = 2022     AND     MONTH ( S . SALES_DATE ) = 1 #2022년 1월의 도서 판매 데이터를 기준 GROUP BY     CATEGORY,     AUTHOR_ID ORDER BY     A . AUTHOR_ID ,     CATEGORY DESC # 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬 --Oracle SELECT     A . AUTHOR_ID ,     A . AUTHOR_NAME ,     B . CATEGORY ,     SUM ( S . SALES * B . P...

코딩 테스트 - 주문량이 많은 아이스크림들 조회하기

--Mysql SELECT     F . FLAVOR FROM     FIRST_HALF F         LEFT JOIN (         SELECT             FLAVOR,             SUM (TOTAL_ORDER) AS TOTAL_ORDER         FROM             JULY         GROUP BY             FLAVOR     ) J                   ON F . FLAVOR = J . FLAVOR ORDER BY     ( F . TOTAL_ORDER + J . TOTAL_ORDER ) DESC LIMIT 3 ; --Oracle SELECT     F . FLAVOR FROM (         SELECT             H . FLAVOR ,             SUM ( H . TOTAL_ORDER ) + SUM ( J . TOTAL_ORDER ) AS TOTAL         FROM FIRST_HALF H                   INNER JOIN   ...

코딩 테스트 - 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기

--Mysql SELECT     C . CAR_ID , #자동차 ID     C . CAR_TYPE , #자동차 종류     ROUND (         C . DAILY_FEE * 30 * ( 100 - P . DISCOUNT_RATE ) / 100     ) AS FEE #대여 금액(컬럼명: FEE) FROM     CAR_RENTAL_COMPANY_CAR AS C     JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY AS H     ON C . CAR_ID = H . CAR_ID     JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN AS P     ON C . CAR_TYPE = P . CAR_TYPE WHERE C . CAR_ID NOT IN (     SELECT         CAR_ID     FROM         CAR_RENTAL_COMPANY_RENTAL_HISTORY     WHERE         END_DATE > '2022-11-01' AND START_DATE < '2022-12-01' #2022년 11월 1일부터 2022년 11월 30일까지 대여 가능 ) AND P . DURATION_TYPE = '30일 이상' #30일간의 대여 금액 GROUP BY     C . CAR_ID HAVING     C . CAR_TYPE         IN         (...

코딩 테스트 - 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

--Mysql 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 AS AVAILABILITY FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY GROUP BY CAR_ID ORDER BY CAR_ID DESC; --Oracle SELECT CAR_ID , MAX ( CASE WHEN '2022-10-16' BETWEEN TO_CHAR( START_DATE , 'YYYY-MM-DD' ) AND TO_CHAR( END_DATE , 'YYYY-MM-DD' ) ...

코딩 테스트 - 년, 월, 성별 별 상품 구매 회원 수 구하기

참조 : https://jmi7313.tistory.com/12 fm 안 붙여도 정답 처리 되기는 하지만... --Mysql SELECT YEAR (SALES_DATE) AS YEAR, MONTH (SALES_DATE) AS MONTH, GENDER , COUNT ( DISTINCT ONLINE_SALE.USER_ID ) AS USERS FROM ONLINE_SALE INNER JOIN USER_INFO ON USER_INFO.USER_ID = ONLINE_SALE.USER_ID WHERE GENDER IS NOT NULL GROUP BY YEAR, MONTH, GENDER ORDER BY YEAR, MONTH, GENDER ; --Oracle SELECT YEAR, TO_NUMBER( MONTH ) AS MONTH, GENDER , COUNT ( DISTINCT USER_ID ) AS USERS FROM ( SELECT TO_CHAR(SALES_DATE , 'YYYY' ) AS YEAR, TO_CHAR(SALES_DATE , 'MM' ) AS MONTH, GENDER , USER_INFO.USER_ID FROM USER_INFO , ONLINE_SALE WHERE USER_INFO.USER_ID = ONLINE_SALE.USER_ID AND GENDER IS NOT NULL ) GROUP BY YEAR, MONTH, GENDER ORDER BY YEAR ,MONTH, GENDER ;

코딩 테스트 - 특정 옵션이 포함된 자동차 리스트 구하기

--Mysql SELECT     CAR_ID,     CAR_TYPE,     DAILY_FEE,     OPTIONS FROM     CAR_RENTAL_COMPANY_CAR WHERE       OPTIONS LIKE '%네비게이션%' ORDER BY     CAR_ID DESC --Oracle SELECT     CAR_ID,     CAR_TYPE,     DAILY_FEE,     OPTIONS FROM     CAR_RENTAL_COMPANY_CAR WHERE       OPTIONS LIKE '%네비게이션%' ORDER BY     CAR_ID DESC 이거 왜 틀릴 확률이 30%지...

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

--Mysql SELECT     BOARD_ID,     WRITER_ID,     TITLE,     PRICE,     CASE         WHEN             STATUS = 'SALE' THEN '판매중'         WHEN             STATUS = 'RESERVED' THEN '예약중'         WHEN             STATUS = 'DONE' THEN '거래완료'     END         STATUS FROM     USED_GOODS_BOARD WHERE     BOARD_ID         IN (             SELECT                 BOARD_ID             FROM                 USED_GOODS_BOARD             WHERE                 CREATED_DATE = '2022-10-05'        ...