목록Programming Skill (52)
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 ..
1. Column 지정 문제집이나 코딩 테스트 플랫폼에서 제공되는 데이터 셋은 대개 깔끔하게 정리되어 있다. 하지만 실제 세상에서 이러한 완벽한 데이터 셋을 찾는 것은 쉽지 않을 것이다. 왜냐하면 세상은 종종 얼렁뚱땅 뒤죽박죽인 경우가 많기 때문이다. 예를 들어, 열 이름에 공백이 있거나 열 이름이 한글로 되어 있다면 어떻게 처리해야 될까?-- 열 자체에 띄어쓰기 or 한국어 있으면 ``(window기준 물결과 동일키)로 묶기 ⭐️⭐-- 'clothing name'와 같이 작은 따옴표 사용시 문자로 취급해 모든 행이 clothing name으로 출력SELECT `customer name`FROM table; 추가적으로 열 이름이 아닌 데이터값에 띄어쓰기가 있다면 작은따옴표로 묶어주면 된다.SELECT *..
1. COUNT 함수SELECT COUNT(*) -- NULL값을 포함한 모든 행의 수 (6)FROM score;SELECT COUNT(eng) -- NULL값을 제외한 모든 eng행의 수 (4)FROM score;SELECT COUNT(DISTINCT eng) -- NULL값, 중복을 제외한 모든 eng행의 수 (4)FROM score; 이처럼 COUNT함수는 NULL값이나 중복된 값이 있는지 눈으로 찾기 힘든 데이터의 검증용으로 많이 사용된다. 다음으로 English 점수의 평균을 구해보자-- NULL값을 가진 열은 계산에서 생략 (전체 평균값이 잘못될 수도 있음)SELECT AVG(eng) FROM score; -- (55+60+85+95) / 4 = 73.75SELECT SUM(eng) / COU..
📢 본 포스팅에서 사용되는 자료와 출처는 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 (..