전체 글
-
2024-01-25스파르타/TIL(Today I Learned) 2024. 1. 26. 00:06
더보기 SQL 코드카타 185. Department Top Three Salaries(SQL)(윈도우 함수, dense_rank, 각 그룹별로 상위 3개씩만 출력하기(여기서는 부서별로 월급 상위 3위까지)) https://leetcode.com/problems/department-top-three-salaries/description/ 각 부서별로 가장 많은 3개의 unique 월급을 받는 직원을 출력하는 문제이다(그냥 금액을 기준으로 큰것 3개에 해당하는 받는 직원 모두 출력하는 의미이다) WITH rk_salary AS ( SELECT e.id, e.name, e.salary, e.departmentId, DENSE_RANK() OVER(PARTITION BY e.departmentId ORDER B..
-
2024-01-24스파르타/TIL(Today I Learned) 2024. 1. 24. 23:15
더보기 더보기 SQL 코드카타 1321. Restaurant Growth(SQL) (두가지 방식 (서브쿼리 많이 VS 윈도우 함수 많이), WITH, SELECT서브쿼리, WHERE서브쿼리, Datediff, Date_sub interval 6 day, min) (뭔가 어떤 분야에서는 많이 쓰일 듯한 쿼리, 이동평균, 여기선 7일 기준으로 이동평균) https://leetcode.com/problems/restaurant-growth/description/ 해당 날짜를 기준으로 6일전 부터 해당날짜까지 총 amount와 그 평균을 구하는 문제이다. 처음에 또 날짜끼리 그냥 뺏다가 통과못한 한개의 테스트 나와서(그전 tc는 1월내에서 쭉 날짜가 나왔었는데 2월로 넘어가는게 포함된 부분부터 이상하게 작동되었..
-
2024-01-23스파르타/TIL(Today I Learned) 2024. 1. 23. 23:44
더보기 SQL코드카타 1978. Employees Whose Manager Left the Company(SQL)(where 서브쿼리 조건, NOT EXISTS) https://leetcode.com/problems/employees-whose-manager-left-the-company/ 각 직원들에 대해 직원의 관리자가 퇴직한 상태이면서 급여이 30000미만인 직원을 출력하는 문제이다. SELECT e.employee_id FROM Employees e WHERE e.salary < 30000 AND e.manager_id IS NOT NULL AND NOT EXISTS( SELECT e2.employee_id FROM Employees e2 WHERE e2.employee_id = e.manager..
-
2024-01-22스파르타/TIL(Today I Learned) 2024. 1. 22. 23:05
더보기 SQL 코드카타 1164. Product Price at a Given Date(SQL) (where in 서브쿼리와 exists 서브쿼리, MAX, GROUP, case when, with, left join, 가장 최근 날짜기준으로 데이터 가져오기) https://leetcode.com/problems/product-price-at-a-given-date/description/ 기본적으로 모든 상품의 기본값은 10으로 정해두고 바뀌면 product_id를 통해 어떤 상품이 change_date를 통해 언제 , new_price얼마로 바뀌었는지 확인 할 수 있는데 2019-08-16을 기준으로 모든 상품의 가격을 출력하는 문제이다. SELECT p.product_id, p.new_price, p..
-
2024-01-20~2024-01-21스파르타/TIL(Today I Learned) 2024. 1. 22. 22:49
더보기 SQL 코드카타 619. Biggest Single Number(SQL)(with, count, max) https://leetcode.com/problems/biggest-single-number/description/ 가장 큰 단일 숫자를 출력하는 문제이다. 가장 큰 숫자가 단일숫자가 아니라면 null값으로 표시한다. #이렇게 하면 아마 잘 안될 듯하여 테스트 삼아서 해봤는데 SELECT m_s.num FROM MyNumbers m_s WHERE COUNT(m_s.num) = 1 #역시 Invalid use of group function 런타임에러 남 GROUP BY 쓰고 HAVING에서 COUNT 사용, 그리고 MAX는 살짝 왜 안되는 거지 싶긴 한데(사실 count도 비슷한 것 같긴 하지..
-
2024-01-21스파르타/WIL(Weekly I Learned) 2024. 1. 21. 22:25
**FACTS(사실, 객관)** : 이번 일주일 동안 있었던 일, 내가 한 일 SQL 코드카타 21문제, 프로젝트 준비 및 발표(주로 시각화 부분을 담당하여 작업하였다) **FEELINGS(느낌, 주관)** : 나의 감정적인 반응, 느낌 우선 SQL은 대체로 내가 좀 여유없이 급하게 보고 푼다고 침착하지 못해서 그랬을 수도 있고 그냥 문제가 조금 난이도가 올라간 것일 수도 있는데 평균적으로 좀 어려운 문제가 많았던 것 같다(정확히는 이제는 슬슬 왠만한건 다 해보기는 했다고 생각하였고 간단한 것은 이제 스무스하게 푼다고 생각했는데 생각해보지 못했던 방식대로 구현해야한다던가 문제를 제대로 받아드리지 못해 예상치도 못했던 반례가 있었다던가, 아니면 기존 함수 등의 작동방식을 사소하더라도 조금 다르게 이해하고 ..
-
2024-01-19스파르타/TIL(Today I Learned) 2024. 1. 19. 23:23
더보기 SQL 코드카타 1174. Immediate Food Delivery II(SQL) (select 서브쿼리, inner join, 같은 테이블 with로 해서 join통해 조건으로 사용) https://leetcode.com/problems/immediate-food-delivery-ii/description/ 주문날짜와 원하는 배달날짜가 동일하면 즉시 주문이 되고 그렇지 않다면 예약이 되는데, 각 고객별로 첫 주문이 즉시 배달인 수 / 전체 고객들 수 로 하여 비율을 소수 둘째짜리 표시하도록 반올림하도록 하여 출력하는 문제이다. WITH min_order AS( SELECT d_m.customer_id, min(order_date) first_order_date FROM Delivery d_m ..
-
2024-01-18스파르타/TIL(Today I Learned) 2024. 1. 18. 22:38
더보기 SQL 코드카타 1193. Monthly Transactions I(SQL) (그룹으로 삼는 컬럼에 null값, Group과 join관련, 복잡 꼭 다시 복습, 시행착오 굉장히 많았음, 그룹으로 하는 것 중에 null도 있어 max와 sum고려(여기선 max로해야만 유효)) https://leetcode.com/problems/monthly-transactions-i/description/ 년도월별, 나라별 transaction수와 양, 승인된 transaction수와 양을 구하는 문제이다 1차 시도 WITH approved AS( SELECT t_s.id , DATE_FORMAT(t_s.trans_date,'%Y-%m') month, t_s.country , count(t_S.id) approv..