본문 바로가기

코딩테스트

(50)
SQL 고득점 kit(GROUP BY) - 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 -- 풀이(1) SELECT CAR_TYPE , COUNT(CAR_TYPE) AS CARS FROM CAR_RENTAL_COMPANY_CAR WHERE OPTIONS LIKE '%통풍시트%' OR OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%가죽시트%' GROUP BY CAR_TYPE ORDER BY CAR_TYPE; - 해설 CAR_TYPE별로 "통풍시트, 열선시트, 가죽시트 중 하나 이상의 옵션이 포함된"이라는 조건을 잘 작성하고, 그 외 자동차 종류를 기준으로 오름차순이라는 기준만 잘 보고 작성하면 되는 문제였다 * 다른 풀이 LIKE가 아닌 REGEXP 연산자를 사용해서 푸는 것도 가능하다. [STUDY/SQL] - MYSQL - REGEXP(REGular EXPress..
SQL 고득점 kit(GROUP BY) - 즐겨찾기가 가장 많은 식당 정보 출력하기 -- 풀이 WITH MAX_FAV AS ( SELECT FOOD_TYPE , MAX(FAVORITES) AS FAVORITES FROM REST_INFO GROUP BY FOOD_TYPE ) SELECT R.FOOD_TYPE , R.REST_ID , R.REST_NAME , M.FAVORITES FROM REST_INFO R JOIN MAX_FAV M ON R.FAVORITES = M.FAVORITES GROUP BY FOOD_TYPE ORDER BY FOOD_TYPE DESC - 해설 1. WITH절로 FOOD_TYPE별 가장 높은 FAVORITES를 출력하는 MAX_FAV라는 테이블을 만듦. 2. 기존 REST_INFO 테이블과 JOIN해서 FOOD_TYPE별로 MAX_FAV의 FAVORITES와 같..
570. Managers with at Least 5 Direct Reports(Medium) Table: Employee +-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | name | varchar | | department | varchar | | managerId | int | +-------------+---------+ id is the primary key (column with unique values) for this table. Each row of this table indicates the name of an employee, their department, and the id of their manager. If managerId is null, then the em..
SQL 고득점 kit(SELECT) - 서울에 위치한 식당 목록 출력하기 조건을 잘 만족시켜야 하는 문제였다. 같은 결과가 출력되더라도, 답이 아닐 수 있다. -- 처음 풀이. 틀린 풀이. SELECT I.REST_ID , I.REST_NAME , I.FOOD_TYPE , I.FAVORITES , I.ADDRESS , ROUND(AVG(R.REVIEW_SCORE), 2) AS SCORE FROM REST_INFO I LEFT JOIN REST_REVIEW R ON I.REST_ID = R.REST_ID WHERE I.ADDRESS LIKE '서울%' GROUP BY R.REST_ID ORDER BY SCORE DESC, I.FAVORITES DESC; 아무리 봐도 틀린 곳이 없다고 생각했지만 역시나 그것은 내 생각일 뿐이었다. 조건을 잘 만족시키지 못했었다. -- 고친 정답 ..
262. Trips and Users(Hard) - 문제. Table: Trips +-------------+----------+ | Column Name | Type | +-------------+----------+ | id | int | | client_id | int | | driver_id | int | | city_id | int | | status | enum | | request_at | date | +-------------+----------+ id is the primary key (column with unique values) for this table. The table holds all taxi trips. Each trip has a unique id, while client_id and driver_id are forei..
SQL 고득점 kit(SELECT) - 3월에 태어난 여성회원 목록 출력하기 -- 풀이 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) = 3 AND GENDER = 'W' AND TLNO IS NOT NULL ORDER BY MEMBER_ID; - 어려운 문제는 아니나, 조건이 이것저것 많다. 1) 생일이 3월인 2) 여성의 정보를 출력하는데, 3) 전화번호가 NULL인 경우는 제외하고 4) 결과는 회원 ID 기준으로 오름차순 정렬하며 5) DATE_OF_BIRTH의 형식이 예시와 동일해야 한다. 조건을 잘 보아야 하는 문제였다.
SQL 고득점 kit(SELECT) - 흉부외과 또는 일반외과 의사 목록 출력하기 -- 풀이 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; - DATE_FORMAT과 ORDER BY 사용법, WHERE절에 조건을 여러 개 걸 줄 아는가를 묻는 문제였다. 주의사항만 빼놓지 않으면 굉장히 평이한 문제였다.
SQL 고득점 kit(SELECT) - 평균 일일 대여 요금 구하기 -- 풀이 SELECT ROUND(AVG(DAILY_FEE), 0) AS AVERAGE_FEE FROM CAR_RENTAL_COMPANY_CAR WHERE CAR_TYPE = 'SUV'; - ROUND 함수와 WHERE절만 사용할 줄 알면 되는 쉬운 문제였다. 해설은 따로 하지 않는다.