본문 바로가기

전체 글339

[HackerRank] SQL Project Planning Advanced Join / Intermediate 문제 👉 문제 링크 : https://www.hackerrank.com/challenges/sql-projects/problem?isFullScreen=true 다음과 같은 테이블에서 end_date와 start_date가 연속적으로 이어지면 하나의 프로젝트로 간주한다. Start_Date 고윳값은 Start_date가 End_Date와 일치하지 않는 것이며, End_Date 고윳값 역시, Start_date와 일치하지 않으면 하나의 프로젝트의 시작일과 종료일이 된다. 이 포인트로 문제를 풀면 아래와 같다 풀이 FROM 절에 두 개의 서브쿼리를 넣는다. 각각 프로젝트별 고유한 시작일과 종료일을 추출하는 것이다. WHERE 절에 시작일이 종료일에 포함되지.. 2024. 1. 17.
[HackerRank] Contest Leaderboard Basic Join / Intermediate 문제 hacker_id, name, 총 점수를 쿼리 총 점수는 challenge_id 별로 가장 높은 값을 합산 한 것(해커별로) 총 점수 기준으로 내림차순 후, 동일한 점수라면 hacker_id 기준으로 정렬 단, 총 점수가 0인 해커는 제외 풀이 FROM 절에 서브쿼리 : 먼저 hacker_id, challenge_id 별로 가장 높은 점수를 얻어내고 그 값을 합산해야한다. Submission 테이블만 사용하며, hacker_id, challenge_id 기준으로 Groupby MAX(score) 값 도출 위의 서브쿼리와 Hackers 테이블을 JOIN SELECT 절에 도출이 필요한 컬럼 hacker_id, name, SUM(max_score)를 나열 .. 2024. 1. 16.
[HackerRank] Challenges Basic Join / Intermediate 문제 hacker_id, name, 도전과제 총 수 출력 결과는 도전과제 총 수(내림차순), 도전과제 총 수가 동일하면 hacker_id로 추가 정렬 단, 도전과제 수가 동일하고, 그 수가 최대 도전과제 수보다 작은 경우 해당 학생은 결과에서 제외 풀이 이 문제의 핵심은 세 번째 조건이며 FROM 절에 서브쿼리를 사용하여 해결한다. 먼저 해커아이디/이름 기준으로 groupby 하여 challenge_id를 count()하여 totalcount를 구한다 다음으로 세번째 조건을 필터링 하기 위해 총 도전과제 수의 중복 수와 전체 도전과제 수 중 최댓값을 구해야한다 도전과제 중복수 : COUNT(challenge_id) 별로 몇 번이나 값이 나왔는지(중복되었는지).. 2024. 1. 16.
[HackerRank] The Report (INNER JOIN - BETWEEN) 문제 다음과 같이 Students, Grades 두 테이블이 주어졌다. 문제는 다음과 같은 순으로 해결한다. 1. 세 개의 열 : 이름, 학년 및 점수 2. 학점이 8 미만인 학생들의 이름은 제외 >> NULL 3. 학점을 내림차순으로 정렬 (높은 학점이 먼저 표시됨) 4. 학점이 8에서 10 사이인 학생들이 여러 명인 경우, 이름을 알파벳 순으로 정렬 - 5. 학점이 8 미만인 학생들의 경우, 이름을 "NULL"로 표시하고 학점을 내림차순으로 정렬 6. 학점이 1에서 7 사이인 학생들이 여러 명인 경우, 점수를 오름차순으로 정렬 풀이 ▶︎ 이 문제의 핵심은 두 테이블을 join 할 때 inner join + between을 사용해서 mark의 최대 최솟값과 grade를 매치시키는 것이다. ▶︎ Case.. 2024. 1. 15.
[HackerRank] Weather Observation Station 5(UNION) 문제 ▶︎ 도시명이 가장 긴 것과, 짧은 것을 하나씩 도출(알파벳 순으로 정렬하여 가장 처음 값만 반환) 풀이 ▶︎ UNION을 사용하여 가장 긴 값과 짧은 값을 각각 구한다. ▶︎ 문자열의 길이는 LENGTH()함수를 사용한다. (SELECT CITY, LENGTH(CITY) FROM STATION ORDER BY 2 ASC, 1 ASC LIMIT 1) UNION (SELECT CITY, LENGTH(CITY) FROM STATION ORDER BY 2 DESC, 1 ASC LIMIT 1) 2024. 1. 15.
[HackerRank] Weather Observation Station 20(중앙값) 문제 STATION 테이블에서 LAT_N 컬럼의 중앙값을 구하고, 그 값을 소수점 4자리까지 반올림하여 나타내기 포인트 👉 mySQL에는 중앙값을 구하는 MEDIUM() 함수가 없다. 이를 참고하여 풀어보자 (MEDIUM 함수는 오라클에 있음!) 풀이 ✨ PERCENT_RANK() - SQL에서 사용되는 윈도우 함수 중 하나로, 정렬된 결과 집합에서 각 행의 백분위 순위를 계산하는 데 사용한다 - 0과 1 사이의 값을 반환하며, 이 값은 주어진 행이 정렬된 순서에서 어느 위치에 있는지를 나타낸다 - 0은 가장 낮은 값이고 1은 가장 높은 값 👉 예를 들어, PERCENT_RANK 가 0.2인 행은 정렬된 결과에서 하위 20%에 위치하고, 0.8인 행은 상위 80%에 위치 LAT_N을 내림차순 정렬하여 P.. 2024. 1. 15.
[Interactive Dashboard] #1. Region/Year 필터 버튼과 매출 Area Chart 다음과 같은 시트에서 필터 조건인 region과 year를 클릭할 수 있는 영역을 만들고, 카테고리별로 매출 추이를 살펴볼 수 있는 라인 영역 차트를 만들어보자 1. 필터 버튼으로 사용할 영역 시트 만들기 상단 region 버튼 만들기 👉 포인트는 더미 측정값 min(1) 사용하는 것 region 열 선반에 넣기 텍스트에도 region 드래그 머리글 표시 해제 더미 측정값으로, min(1)을 열에 추가 축편집 >> 고정된 시작과 끝 (0, 1) 전체보기로 뷰를 바꿔주고 막대 크기를 최대로 키워준다 서식 변경 행과 열 구분선을 해제 0 기준선 해제 격자선도 해제 레이블 마크 변경 글자 가운데 정렬 볼드 처리, 글꼴 변경 색상 변경 배경 음영을 연한 회색으로 2. 좌측 카테고리 필터 만들기 카테고리를 행 선.. 2024. 1. 14.
[Sales Analytic Dashboard] #6. 대시보드 만들기 대시보드 크기 텍스트 개체를 대시보드에 끌어와 제목 만들어주기 대시보드 배경색 설정 서식 >> 대시보드 >> 대시보드 음영 값 변경 가로 컨테이너 넣기 가로 컨테이너를 추가하고, '빈 페이지' 3개를 차례로 추가 컨테이너를 더블클릭 >> 컨텐츠 균등 분할 첫번째 가로 컨테이너 안에, 가로 컨테이너를 하나 더 추가 Sales 지표 두가지 시트를 넣어준다(Sales Banner, Sales Sparkline) 처음에 만들었던, 자리 차지용 '빈 페이지'는 삭제 동일하게 다른 지표도 채워준다 대시보드 위에 자리를 조정하고, 제목을 숨겨준다 하단에 가로 컨테이너 추가 세 가지 시트를 차례로 넣어주고, 제목은 없애준다 제목 추가 텍스트 개체 드래그하여 상단 그래프 제목 추가 가로 컨테이너를 드래그하고, 텍스트 개.. 2024. 1. 14.
[심슨의 역설] Simpson’s Paradox 데이터를 분석할 때 Segmentation, Breakdown과 같이 데이터를 쪼개보며 현상에 대한 원인을 진단하는 일은 기본적이다. 특히, 실험을 할 때 Experimental Data(실험군과 대조군)에서 데이터를 쪼개보며 비교하는 상황도 존재한다. 이때 유의해야할 사항이 심슨의 역설과 교란변수이다. 심슨의 역설이란? 여러 그룹의 자료를 합했을 때 결과와 각 그룹을 구분했을 때 결과가 다른 때로, 부분의 단순 합과 각 부분의 결과가 달라지는 것 자체가 '역설'적이다 예시 백신 A, B에 대한 사망률을 비교하는 상황을 가정한다. 전체 그룹을 묶어서 Treatment 효과를 파악하는 방법으로, 평균 처치 효과(Average Treatment Effect:ATE)라고 한다. ATE 결과는 다음과 같다. 👉.. 2024. 1. 14.
728x90