mysql 문제풀이/hard 3

Leetcode 601 - Human Traffic of Stadium

링크: https://leetcode.com/problems/human-traffic-of-stadium/ 습득한 점: 연속되는 숫자를 찾는 새로운 아이디어. GROUP BY, PARTITION BY 차이 재확인. hard 난이도는 아니었다. 문제: 사람 수 (people)가 100이상일 때, 3개 이상의 연속되는 "id"값에 대한 행을 모두 조회하는 쿼리 작성 결과값은 "visit_date" 기준으로 오름차순 정렬 문제파악: 일단 visit_date는 정렬 빼고는 신경 쓸 필요는 없을 것 같았고, 우선 사람 수가 100명 이상인 테이블을 걸러낸 결과값을 WITH문으로 테이블을 새롭게 구성한 뒤 쿼리 작성을 시작하면 될 것 같다. 대략적으로 2가지 풀이법이 보인다. 셀프 조인 혹은 윈도우 함수 사용하기 ..

프로그래머스 Lv 3 - 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기

https://school.programmers.co.kr/learn/courses/30/lessons/157340 습득한 점: 레벨 3문제지만, 코드 길이에 관계없이 지금까지 풀었던 문제중에서 가장 까다로웠고, 깨닫게 된 점이 많았다. 문제를 마주하면 이해하기 좋은 코드 작성하고자, 반복적으로 필요하지 않고 해당 함수가 꼭 필요하지 않음에도, With 구문을 습관적으로 활용해서 문제를 풀곤 했었다. 덕분에 이해하기는 편했으나, 코드 줄 수가 너무 길어지는 단점이 있었다. 결과적으론... 이해하는 것이 코드를 작성한 나만 쉽지 않을까? 생각들었다. DA가 sql 코드 성능을 신경 쓸 필요는 별로 없겠지만, 그래도 기존에 해왔던 파이썬이나 자바처럼 좀 더 컴팩트하게 작성하면 좋지 않을까? 앞으로는 가독성도..

프로그래머스 Lv 4 - 그룹별 조건에 맞는 식당 목록 출력하기

인터넷 상에 죄다 LIMIT 1 풀이 투성이라, 조금 헤멧다. 리팩토링은 나중에...해봐야겠다. 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131124 습득한 점: WITH 구문을 사용 함과 동시에, 다른 2가지 이상의 테이블을 동시에 활용 할때, FROM 절에 들어할 테이블이 2개 이상인 경우가 있어서 이를 어찌 처리해야 할지 난감했다. 결과적으로는 WITH 문 + SELECT 문 조합으로 계산을 끝낸 뒤, 이 전체를 새로운 테이블의 WHERE 값에 넣어버리는 식으로 쿼리를 작성했다. 이 과정에서, 아래 2가지의 차이를 알게되었다. WHERE 컬럼 = (~~~~) WHERE 컬럼 IN (~~~~) 서브쿼리에 해당하는 값이 1가지 이고,..