분류 전체보기 185

[HackerRank] Top Earners / N가지 풀이

GROUP BY, ORDER BY, LIMIT 이용SELECT months * salary AS earnings, COUNT(employee_id) AS cntFROM EmployeeGROUP BY earningsORDER BY earnings DESCLIMIT 1 WHERE절 서브쿼리 이용earnings의 값이 max_earnings와 동일한 경우를 WHERE절 서브쿼리를 통해 필터링SELECT months * salary AS earnings, COUNT(name)FROM employeeWHERE months * salary = (SELECT MAX(months * salary) FROM employee) -- SELECT의 AS 쓸 수 없음GROUP BY salary -- SEL..

SQL/문제풀이 2024.05.08

[Leetcode] Department highest salary / N가지 풀이 (Subquery, Window Function)

https://leetcode.com/problems/department-highest-salary/0. FROM절 서브쿼리-- 1. 각 department별로 어떤 salary가 highest인지SELECT departmentId, MAX(salary)FROM employeeGROUP BY departmentId -- 2. 전체 employee중 해당 department의 가장 salary를 많이 받는 사람만 뽑아낼 것-- 1번 쿼리 결과를 Employee table에 INNER JOIN 해줌-- 3. 원하는 형태로 출력 위해 Department를 JOINSELECT d.name AS Department, e.name AS Employee, e.salaryFROM Employee e ..

SQL/문제풀이 2024.05.08

[LeetCode] Consecutive Numbers / N가지 풀이

https://leetcode.com/problems/consecutive-numbers/description/ 1. INNER JOIN을 이용한 풀이SELECT a.num AS ConsecutiveNumsFROM logs a LEFT JOIN logs b ON a.id + 1 = b.id LEFT JOIN logs c ON a.id + 2 = c.idWHERE a.num = b.num AND b.num = c.num 2. LEAD 함수를 활용한 풀이1) 2행에 나오는 숫자, 3행에 나오는 숫자를 1행에 당겨오는 작업SELECT num, LEAD(num, 1) OVER(ORDER BY id) AS next1, -- id column을 기준으로 순서를 파악한 후 num column을 1칸 당겨줌 ..

SQL/문제풀이 2024.05.08

Window Function

데이터리안 '[백문이 불여일타] 데이터 분석을 위한 고급 SQL' 을 수강하며 정리한 내용입니다.Winodw Function함수() OVER (PARTITION BY ORDER BY )ex. SUM(profit) OVER (PARTITION BY country)함수(함수를 적용하고 싶은 column)ex. SUM, AVG, COUNTPARTITION BY 그룹화 기준으로 삼고싶은 column (그룹을 지정해주는 것)ORDER BY 정렬 기준으로 삼고싶은 columnWindow Function vs GROUP BYGROUP BY : 1 그룹당 1개 값으로 요약Window Function : 그룹별 1개 row로의 요약 대신 각 row(원래 데이터)에 그룹별 요약 결과물을 뿌려주는 느낌집계함수MAX()--..

SQL 2024.05.08

데이터 로그 설계, 데이터 로깅, 이벤트 로그 설계, 데이터 QA

https://zzsza.github.io/data/2021/06/13/data-event-log-definition/ 데이터 로그 설계, 데이터 로깅, 이벤트 로그 설계, 데이터 QA의 모든 것이벤트 데이터 로그 설계, 데이터 로그 설계, 데이터 로깅, 데이터 QA에 대해 작성한 글입니다 키워드: 데이터 로깅, 데이터 로깅이란, 데이터 로깅 시스템, Firebase event logging, 이벤트 로그 설계,zzsza.github.io 위 포스팅을 참고하여 공부한 내용을 정리했습니다. 1. 데이터 로깅?앱을 사용하면 우리가 어떤 행동을 하는지 데이터가 남음ex. 쿠팡 접속 → '사과' 검색 → 장바구니 → 결제이런 데이터를 사용자 로그 데이터, 이벤트 로그 데이터 등으로 부름로그접속 기록, 특정 행동..

Domain Knowledge 2024.05.02

[Ad] 플랫폼, 미디어

플랫폼 사용자가 다양한 활동을 하는 디지털 서비스와 채널 - 소셜 미디어 사이트 (Facebook, Instagram) - 검색 엔진 (Google) - 온라인 쇼핑 사이트 (Amazon) - 스트리밍서비스 (넷플릭스) 미디어 정보 전달의 수단 광고가 게재되는 다양한 형식과 매체 플랫폼을 통해 제공되기도 하고, 독립적으로 운영되기도 함 - 신문 - 잡지 - TV - 라디오 - 디지털미디어 고객 데이터는 결국 고객과의 접점인 플랫폼과 미디어에 집중 따라서 교차점에서 효과적인 광고 전략을 구현하기 위해 고객 데이터를 분석하고 활용하는 것이 중요

Domain Knowledge 2024.04.12

[LeetCode] friend-requests-ii-who-has-the-most-friends

WITH temp AS ( SELECT id, SUM(cnt) AS num FROM ( (SELECT requester_id AS id, COUNT(accepter_id) AS cnt FROM RequestAccepted GROUP BY requester_id) UNION ALL (SELECT accepter_id AS id, COUNT(requester_id) AS cnt FROM RequestAccepted GROUP BY accepter_id) ) a GROUP BY id ) SELECT id, num FROM temp WHERE num = (SELECT MAX(num) FROM temp) 1. UNION ALL을 이용해서 requester_id와 accepter_id를 모두 COUNT 해준 후 중..

카테고리 없음 2024.03.26

[LeetCode] restaurant-growth 📌

https://leetcode.com/problems/restaurant-growth/?envType=study-plan-v2&envId=top-sql-50 날짜별 이동합과 이동평균을 구하는게 어려웟던 문제 1. 날짜를 만들어주고 2. 이동합을 구해주고 3. 이동평균을 구해주는 식으로 문제를 풀어야 한다 1. 날짜 만들어주기 SELECT visited_on FROM customer c WHERE visited_on >= (SELECT DATE_ADD(MIN(visited_on),INTERVAL 6 DAY) FROM customer) GROUP BY visited_on WHERE절 서브쿼리에 DATE_ADD(날짜, INTERVAL n DAY) 함수를 사용해서 테이블 내의 최소일자 + 6일 이상 인 날짜들에..

카테고리 없음 2024.03.26

[LeetCode] investments-in-2016 📌

https://leetcode.com/problems/investments-in-2016/description/?envType=study-plan-v2&envId=top-sql-50 1. tiv_2015가 중복 2. lat, lon이 유일 2가지 조건을 WHERE절 서브쿼리를 이용해 작성해주면 된다 SELECT ROUND(SUM(tiv_2016), 2) AS tiv_2016 FROM insurance WHERE tiv_2015 IN ( SELECT tiv_2015 FROM insurance GROUP BY tiv_2015 HAVING COUNT(*) > 1 -- 해당 tiv_2015가 2번 이상 등장해야 함 ) AND WHERE lat, lon IN ( SELECT lat, lon FROM insuran..

SQL/문제풀이 2024.03.26