반응형

코딩 테스트/MySQL 23

[HackerRank] Placements

Placements | HackerRankWrite a query to output the names of those students whose best friends got offered a higher salary than them.www.hackerrank.com문제 문제 접근 방식이번 문제는 조인 문제이다. 문제에서 요구한 사항은 다음과 같다.1) 친한 친구가 더 높은 연봉을 받은 student의 name 출력2) 친한 친구가 받은 연봉 기준 오름차순 정렬 (단, 동일한 급여를 받은 student는 없음) 구하고자 하는 데이터를 출력하기 위해 우선 필요한 컬럼은 student의 name, salary, friend의 salary이다.student의 name과 salary를 가져 오기 위해 STU..

[HackerRank] SQL Project Planning

SQL Project Planning | HackerRankWrite a query to output the start and end dates of projects listed by the number of days it took to complete the project in ascending order.www.hackerrank.com문제 문제 접근 방식문제에서 요구하는 사항은 다음과 같다.1) 프로젝트 종료일이 연속적이라면 동일한 프로젝트의 일부가 됨 2) 프로젝트 완료일수 기준 오름차순, 프로젝트 시작일자 기준 오름차순 3) 프로젝트 시작 날짜, 종료 날짜 출력 이 문제는 알고리즘 문제와 가까운 듯 하다.lag, lead 함수 / datediff / rank 함수 등 여러 함수를 활용해보려고 했..

[HackerRank] Contest Leaderboard

Contest Leaderboard | HackerRankGenerate the contest leaderboard.www.hackerrank.com문제 문제 접근 방식이번 문제도 서브쿼리를 활용하면 되는 문제이다. 문제에서 요구한 조건은 다음과 같다1) hacker_id, name, total score (score 내림차순 정렬, 점수가 동일하면 hacker_id 오름차순 정렬) 2) total score가 0인 hacker 제외 3) total score : 모든 challenges에 대한 최대 점수(max)의 합 우선 total score는 각 hacker와 challenge의 최대 점수를 구해서 합하면 된다. 이때 서브쿼리를 활용할 것.최대 점수를 구한 뒤, hackers 테이블과 조인을 하여..

[HackerRank] Challenges

Challenges | HackerRankPrint the total number of challenges created by hackers.www.hackerrank.com문제 문제 접근 방식이 문제는 서브쿼리를 얼마나 잘 활용하는지를 테스트하는 문제이다. 문제에서 요구하는 사항은 다음과 같다1) 챌린지 수가 같으나 챌린지 수가 가장 큰 수가 아니라면 결과에서 해당되는 학생을 출력하지 않음→ ① 챌린지 수가 같지 않은 경우 / ② 챌린지 수가 가장 큰 수인 경우 이 2가지를 조건에 걸면 위에 해당하는 학생들을 출력할 수 있음2) 챌린지 수 내림차순 정렬, 챌린지 수가 동일하면 hacker_id 기준 오름차순 정렬 1) - ① 챌린지 수가 같지 않은 경우 (= 챌린지 수가 중복되지 않은 경우)학생별..

[HackerRank] The PADS

https://www.hackerrank.com/challenges/the-pads/problem The PADS | HackerRankQuery the name and abbreviated occupation for each person in OCCUPATIONS.www.hackerrank.com문제 문제 접근 방식이번 문제는 SQL 내장 함수에 대해 물어보는 문제였기에 쉬운 문제였다.1) 이름과 괄호 속 직업의 첫 글자 출력하기 → LEFT() 함수를 활용하여 첫번째 글자 출력 → CONCAT() 함수를 활용하여 이름, 괄호, 직업의 첫글자 합쳐서 출력2) 직업, 직업 별 데이터 갯수를 특정 문장에 적용하여 출력하기 → LOWER() 함수를 활용하여 직업명을 소문자로 변경 → C..

[HackerRank] Ollivander's Inventory

Ollivander's Inventory | HackerRankHelp pick out Ron's new wand.www.hackerrank.com문제 문제 접근 방식문제에서 말한 조건은 다음과 같다- EVIL이 아닌 지팡이 - POWER 기준 내림차순, 같은 POWER일 경우 AGE 기준 내림차순 - 지팡이 구입 시 최소한의 필요 코인 출력 1) EVIL이 아닌 지팡이→ WHERE 조건절 활용 2) POWER 기준 내림차순, 같은 POWER일 경우 AGE 기준 내림차순 → ORDER BY 절 활용 3) 지팡이 구입 시 최소한의 필요 코인 출력→ 조인절을 활용해서, (POWER, AGE) 기준으로 COINS_NEEDED의 최솟값을 구한 다음, 기존 테이블과 조인하여 조인 조건절에 COINS_NEE..

[HackerRank] Top Competitors

Top Competitors | HackerRankQuery a list of top-scoring hackers.www.hackerrank.com문제 문제 접근 방식2개 이상의 챌린지에서 만점을 받은 hacker의 id와 name을 출력하는 문제이다.만점을 받은 hacker가 여러 명 있을 경우, 만점을 받은 총 챌린지 수 기준 내림차순이며만점을 받은 총 챌린지 수가 동일하면 hacker_id 기준 오름차순 정렬을 해야 한다. 2개 이상의 챌린지에서 만점 받은 hacker를 조건절을 통해 거르고문제에서 요구한 정렬을 하면 된다. where 절과 having 절을 활용하여 조건을 걸고 order by 절을 통해 정렬하여 쿼리를 구성하면 된다. 1) SUBMISSIONS 테이블을 기준으로 연관된 컬럼끼리 ..

[HackerRank] The Report

The Report | HackerRankWrite a query to generate a report containing three columns: Name, Grade and Mark.www.hackerrank.com문제 문제 접근 방식우선 STUDENTS 테이블과 GRADES 테이블을 조인하는 것이 첫번째,그 다음에 문제에서 요구하는 조건들에 맞춰 조건문을 작성하는 것이다. STUDENTS 테이블에는 학생들의 MARKS가 있으며, GRADES 테이블에는 각 GRADE 별 MARKS 범위가 나와있다그렇기에 그 범위 내에 해당하는 GRADES를 가져오도록 JOIN 시 ON 조건절에 작성해주면 된다.ON 절에 BETWEEN을 활용하여 범위 조건을 사용할 수 있다. 그 다음 문제에서 요구하는 조건들이다...

[HackerRank] Weather Observation Station 20

Weather Observation Station 20 | HackerRankQuery the median of Northern Latitudes in STATION and round to 4 decimal places.www.hackerrank.com문제 문제 접근 방식LAT_N의 중앙값을 찾는 문제이다.MySQL은 중앙값을 구할 수 있는 내장함수가 없기 때문에 직접 계산해야 한다. 1) 우선 집계하기 전에 필요한 데이터를 만든다.- LAT_N을 오름차순으로 정렬하여 순서 매기기 → ROW_NUMBER 활용- LAT_N이 전체 몇 개가 있는지 (몇 개의 행이 있는지) 확인 → COUNT() OVER() 활용 2) 중앙값은 전체 데이터의 갯수가 짝수인지 홀수인지에 따라 계산식이 다르다.- 홀수 : (전체..

[HackerRank] New Companies

New Companies | HackerRankFind total number of employees.www.hackerrank.com문제 문제 접근 방식회사코드와 창립자, 그리고 각 회사 별 lead_manager, senior_manager, manager, employee의 수를 조회하는 문제이다.테이블들을 잘 살펴보면, Employee 테이블에 company_code부터 조회해야 하는 데이터를 다 가지고 있다.Employee 테이블에서 창립자 데이터만 들고오면 되기에 Company 테이블과 조인하면 끝! SELECT A1.COMPANY_CODE , A1.FOUNDER , COUNT(DISTINCT A2.LEAD_MANAGER_CODE) , COUNT(DISTINCT A2.S..

반응형