목록Programming Skill/CodingTest (SQL) (34)
Data Blog
📢 본 포스팅에서 사용되는 자료와 출처는 HackerRank 임을 밝힙니다. https://www.hackerrank.com/challenges/the-blunder/problem?isFullScreen=true 해당 문제를 요약하면 다음과 같다.1. Samantha는 모든 직원의 평균 월 급여를 계산해야 했지만 키보드 0이 손상2. 실제 평균 급여와 0이 제거된 평균 급여 간의 차이 추출3. 정수로 올림 여기서 사용된 함수는 REPLACE(대상, 찾을 문자열, 대체 문자열)이다.salary 변수에서 '0'을 찾아 공백으로 대체해 주면 된다.문자에 대한 조건을 줄 때는 꼭 작은따옴표(ex. 'abc')를 사용해야 하며, 공백은 ''(빈 작은따옴표)로 표현한다. 소수점과 관련된 대표적인 숫자 함수를 알아..
📢 본 포스팅에서 사용되는 자료와 출처는 HackerRank 임을 밝힙니다. https://www.hackerrank.com/challenges/the-pads?isFullScreen=true 해당 문제를 요약하면 다음과 같다.1. 모든 이름을 알파벳순으로 쿼리하고, 각 직업의 첫 글자(대문자)를 괄호로 묶기2. 와 같은 형식으로 출력 단, 발생 횟수를 기준으로 오름차순 정렬, 발생 횟수가 동일한 경우 직업을 기준으로 오름차순 정렬3. 1과 2의 합집합으로 최종 결과물 제출 step 1) 이름 + (각 직업 첫 글자)name 열과 occupation 열을 하나로 결합하기 위해서는 SELECT 문에서 결합 연산자인 CONCAT을 사용한다. LEFT(occupation, 1)은 SUBSTR(occ..
📢 본 포스팅에서 사용되는 자료와 출처는 HackerRank 임을 밝힙니다. https://www.hackerrank.com/challenges/weather-observation-station-9/problem?isFullScreen=true 해당 문제를 요약하면 다음과 같다.1. 모음(a, e, i, o, u)으로 시작하지 않는 2. 중복을 제외한 city 이름 추출 방법 1) LIKE 연산자LIKE 연산자는 텍스트를 통해 데이터를 검색하는 텍스트 마이닝 기법이다. 이번 문제에서도 LIKE 연산자를 활용하여 문제를 해결하고자 하였으며, 여러 조건을 괄호로 묶고 NOT을 사용하여 특정 문자로 '시작하지 않는' city 이름을 쿼리로 작성했다.-- 방법 1)SELECT DISTINCT cityFROM ..
📢 본 포스팅에서 사용되는 자료와 출처는 LeetCode 임을 밝힙니다. https://leetcode.com/problems/rising-temperature/description/ 해당 문제를 요약하면 다음과 같다.1. 어제보다 temperature가 높은 날의 id를 출력2. 정렬 고려하지 않음 방법 1) DATEDIFF 함수DATEDIFF(시점2, 시점1) = 시점2 - 시점1을 활용하여 2015-01-01과 2015-01-02의 데이터를 한 행에 출력하는 코드는 다음과 같다. 기간은 양수여야 하므로, 시점2는 B 테이블의 recorddate, 시점1은 A 테이블의 recorddate가 된다.SELECT *FROM weather AS w LEFT JOIN weather AS w2 ON ..
📢 본 포스팅에서 사용되는 자료와 출처는 LeetCode 임을 밝힙니다. https://leetcode.com/problems/patients-with-a-condition/description/ 해당 문제를 요약하면 다음과 같다.1. conditions에 'DIAB1' 단어가 들어간 환자 정보를 출력2. 정렬 고려하지 않음 문제를 처음 봤을 때 너무 쉬워 보여 바로 코드를 작성했지만, 예상과 달리 결과가 잘못 나왔다.SELECT *FROM patientsWHERE conditions LIKE '%DIAB1%';/*["patient_id", "patient_name", "conditions"][3, "Bob", "DIAB100 MYOP"][4, "George", "ACNE DIAB100"]*/ 이 문제..
📢 본 포스팅에서 사용되는 자료와 출처는 HackerRank 임을 밝힙니다. https://www.hackerrank.com/challenges/weather-observation-station-19/problem?isFullScreen=true 해당 문제를 요약하면 다음과 같다.1. 두 점 (a, b)는 lat_n의 최솟값과 최댓값, (c, d)는 long_w의 최솟값과 최댓값 2. 두 점 P1(a, c) P2(b, d) 사이의 유클리드 거리 구하기 중학교 때 배운 유클리드 거리의 정의는 다음과 같다. a, b, c, d 점을 미리 추출한 후, CTE(Common Table Expression)로 저장하고 유클리드 거리 정의에 맞게 계산된 최종 코드는 다음과 같다.WITH distance AS (..
📢 본 포스팅에서 사용되는 자료와 출처는 LeetCode 임을 밝힙니다. https://leetcode.com/problems/sales-analysis-iii/description/해당 문제를 요약하면 다음과 같다.1. 2019년 1분기에만 판매된 상품을 출력2. 정렬 고려하지 않음 BETWEEN을 사용해 날짜형에 조건을 주었지만, 잘못된 결과가 나왔다.SELECT p.product_id , p.product_nameFROM product AS p LEFT JOIN sales AS s ON p.product_id = s.product_idWHERE s.sale_date BETWEEN '2019-01-01' AND '2019-03-31';/*["product_id", "product_name..
📢 본 포스팅에서 사용되는 자료와 출처는 Programmers 임을 밝힙니다. https://school.programmers.co.kr/learn/courses/30/lessons/151138 해당 문제를 요약하면 다음과 같다.1. 대여 시작일이 2022년 9월에 속하는 대여 기록2. 대여 기간이 30일 이상인 경우 '장기 대여', 그렇지 않은 경우 '단기 대여'로 분류3. history_id 기준으로 내림차순 정렬 날짜 타입 변수 사이의 일수를 계산할 때 사용하는 함수는 DATEDIFF(시점1, 시점2) = 시점1 - 시점2 이다.예를 들어, 대여 시작일이 9월 1일이고 반납 일자가 9월 3일인 경우 대여 기간은 3일이다.SELECT history_id , car_id , DATE_FOR..