목록Programming Skill (52)
Data Blog
📢 본 포스팅에서 사용되는 자료와 출처는 HackerRank 임을 밝힙니다. https://www.hackerrank.com/challenges/weather-observation-station-20/problem?isFullScreen=true 해당 문제를 요약하면 다음과 같다.1. 중앙값이란 상위 50%와 하위 50%를 구분하는 통계량2. lat_n의 중앙값 조회3. 결과는 소수 넷째 자리까지 표시 놀라운 사실은 MySQL에서는 중앙값을 구해주는 함수가 없다는 점이다! 기본적인 세팅은 다음과 같다. 중앙값은 데이터를 크기 순서(ASC 또는 DESC에 상관없이)로 나열했을 때 가운데 순번에 있는 숫자이다. 따라서 이전에 배운 계층형 쿼리인 SET 문을 활용하여 데이터 행에 숫자를 부여하자. 데이터에 ..
1. 가장 최근에 주문한 날짜는?? 위 질문을 듣고 바로 떠오른 풀이법은 첫 번째 방법이다. 그러나 데이터 타입이 날짜형일 경우에는 MIN 함수와 MAX 함수를 사용하여 가장 오래된 날짜와 가장 최근 날짜를 구할 수 있다.-- 방법 1) LIMITSELECT date FROM tableORDER BY date DESCLIMIT 1;-- 방법 2) 집계 함수SELECT MAX(date) AS max_date , MIN(date) AS min_dateFROM records; 2. 날짜형 데이터 타입 필터링 날짜형 데이터 타입은 다음과 같다.DATETIME : 날짜와 시간을 저장하는 데이터 타입 (예: 2022-10-01 18:25:30)DATE : 날짜를 저장하는 데이터 타입 (예: 2022-10-0..
cf. 윈도 함수에 대한 보다 자세한 설명은 아래에 첨부한 포스팅을 참고해 주시기 바랍니다. (먼저 읽어보는 것을 추천합니다!) Window Function으로 집계와 순위 다루기1. 집약 전 + 집약 함수 동시에 다루기 (by Window Function) Window Function을 사용하면 원래 테이블의 값과 집계 함수의 결괏값을 쉽고 효율적으로 조합할 수 있다. 즉, 테이블 전체의 평균값과 user_id별xixinn.tistory.com ABC 분석이란 매출 중요도를 기준으로 상품을 나누는 분석 기법으로, 매출이 높은 카테고리 순서에 따라 분류한다. 이 방법은 매출이 높은 카테고리 순서로 정렬한 후, 매출 합계를 기반으로 카테고리별 매출 비율과 해당 시점까지의 누계를 계산한다. 이후, 사용자의 ..
1. Category별 매출 & 소계 대분류(category)와 소분류(sub_category), 그리고 가격을 조합하여 데이터의 특징을 추출해 보자. 여기서 말하는 '조합'이란 대분류와 소분류 각각의 경우의 수를 모두 고려한 것을 의미한다. 예를 들어, cloth 테이블에서 카테고리별 매출과 소계를 동시에 추출한다면, 다음과 같은 형식이 될 수 있다. 방법 1) CTECTE를 활용하여 카테고리별 매출과 소계를 동시에 추출하는 쿼리는 다음과 같다. 소분류 매출 집계, 대분류 매출 집계, 전체 매출 집계(계층별로 집계한 결과)를 UNION ALL 연산자를 사용해 묶어주면 끝이다. (합쳐지는 SELECT 문의 열과 데이터 타입이 일치해야 하는 점은 굳이 언급하지 않아도 알 것이다.) CTE는 코드의 가독성을..
1. Z차트란?Z차트에 대한 보다 자세한 설명은 아래에 첨부한 포스팅을 참고해 주시기 바랍니다. (먼저 읽어보는 것을 추천합니다!) Z차트1. 개념 Z차트는 월 단위 매출, 매출 누계, 그리고 이동 합계의 세 가지 데이터를 차트 형태로 표현한 것이다. 이 차트는 데이터의 단기적 추이인 매출 누계를 통해 최근의 매출 흐름을 한눈에 파xixinn.tistory.com 2. 월단위 매출 집계 여러 개의 새로운 테이블을 WITH 구문 안에 쉼표를 사용해 만들고, 연도와 월로 그룹화하여 월단위 매출을 구할 수 있다.WITH purchase_2122 AS ( SELECT dt , SUBSTR(dt, 1, 4) AS year , SUBSTR(dt, 6, 2) AS month ..
📢 본 포스팅에서 사용되는 자료와 출처는 HackerRank 임을 밝힙니다. https://www.hackerrank.com/challenges/symmetric-pairs/problem?isFullScreen=true 해당 문제를 요약하면 다음과 같다.1. Symmetric Pairs란, 두 쌍 (X1, Y1)과 (X2, Y2)에서 X1 = Y2이고 X2 = Y1인 관계 2. Functions 테이블에 있는 모든 Symmetric Pairs를 출력 3. X1 ≤ Y1 조건을 만족하는 쌍만 출력 4. X1 기준으로 오름차순 정렬 조건 1과 조건 3에 해당하는 Symmetric Pairs는 크게 두 가지 경우로 나눌 수 있다.case 1) X1 = Y1인 경우 (ex. (20, 20) & (20, 20..
cf. 윈도 함수에 대한 보다 자세한 설명은 아래에 첨부한 포스팅을 참고해 주시기 바랍니다. (먼저 읽어보는 것을 추천합니다!) Window Function으로 집계와 순위 다루기1. 집약 전 + 집약 함수 동시에 다루기 (by Window Function) Window Function을 사용하면 원래 테이블의 값과 집계 함수의 결괏값을 쉽고 효율적으로 조합할 수 있다. 즉, 테이블 전체의 평균값과 user_id별xixinn.tistory.com 1. 월별 매출 누계 purchase 테이블(2022-11-01 ~ 2022-11-10)은 날짜별로 2개의 데이터가 존재하는 테이블이다. 이 테이블에서 날짜별 purchase_amount의 합계를 구하고, 윈도 함수를 사용하여 현재 행을 기준으로 이전 7일간의 ..
1. Pivoting 피벗(Pivot)은 행으로 나열된 데이터를 열로 변환하여 더 쉽게 이해할 수 있도록 가공하는 과정이다. 시간이 지나면서 쌓인 데이터는 세로로 긴 형태를 띠어 가독성이 떨어질 수 있는데 이때, 피벗을 활용하면 대규모 정보를 가진 데이터의 가독성을 높일 수 있다. 2. 한 달 전 자료 한 달 이내에 구매 기록이 있으면 1점을, 그렇지 않으면 0점을 부여해 보자. (오늘은 2024년 10월 5일)가장 먼저 떠오른 생각은 DATEDIFF 함수와 CURRENT_DATE() 함수를 사용하여 구매 날짜와 현재 날짜의 차이가 30일이 되는 날짜를 구하는 것이었다. (벌써 복잡해짐,,) 이제는 기한을 계산하라는 요청에 대해 날짜 함수를 사용하는 것이 항상 정답이라는 고정관념을 버리고 똑똑한 우리의..