전체 글 76

정규표현식 review

기본 정규표현식 기호1^문자열의 시작을 나타냄 패턴이 문자열의 맨 앞에서부터 일치해야 함2$문자열의 끝을 나타냄. 패턴이 문자열의 맨 끝에서 일치해야 함3.임의의 단일 문자와 일치함. 어떤 문자든 한 글자와 일치할 수 있음4*바로 앞의 패턴이 0번 이상 반복될 수 있음을 의미함5+바로 앞의 패턴이 1번 이상 반복될 수 있음을 의미함6|OR 연산자로, 앞의 패턴 또는 뒤의 패턴 중 하나와 일치하면 됨7[ ]문자 클래스에 해당, 대괄호 안에 있는 문자들 중 하나와 일치하면 됨 - 예: [aeiou]는 "a", "e", "i", "o", "u" 중 하나의 문자와 일치8{ }바로 앞의 패턴이 정확히 n번 반복되는 경우와 일치함 - 예: ([DdIi]){2}는 "D", "d", "I", "i" 중 1개 문자가 두..

Data Analysis/Regex 2024.08.21

1978. Employees Whose Manager Left the Company

https://leetcode.com/problems/employees-whose-manager-left-the-company/  Find the IDs of the employees whose salary is strictly less than $30000 and whose manager left the company. When a manager leaves the company, their information is deleted from the Employees table, but the reports still have their manager_id set to the manager that left. 내용 요약:매니저가 퇴사하면, Employess 목록에서 사라지지만, 다른 직원의 매니저로서 기..

1527. Patients With a Condition

https://leetcode.com/problems/patients-with-a-condition/description/ replace, substring, concat, left, right, lower, upper, trim, length, format, instr 정도만 알아도 SQL 데이터 변형에 큰 문제가 없겠지만, Regex 문법 까지 익숙해지면 빠른 전처리에 큰 도움이 될 것 같다.   Write a solution to find the patient_id, patient_name, and conditions of the patients who have Type I Diabetes. Type I Diabetes always starts with DIAB1 prefix.Return the r..

1251. Average Selling Price

https://leetcode.com/problems/average-selling-price/description/ 15번째 케이스에서 Prices 테이블의 product_id가 3이상으로 추가되면서, UnitSold 테이블에 없는 데이터 값도 결과값에 으로 나타나야 했기에 INNER 를 LEFT로 수정하고,조건 결과값으로, Null값도 함께 나타날 수 있도록 WHERE문 끝에 "or UnitsSold.product_id IS NULL" 을 이어붙인 뒤 COALESCE를 ROUND 앞에 씌워 NULL값 처리를 해야했다.   잠깐 생각하게 만들었던 문제다음부턴 예시에 보이지 않는 테스트 케이스를 예상해서 작성해봐야겠다. *** JOIN에 AND 조건을 덧붙이는 방식보다, WHERE로 조건을 추가 작성하는 ..

550. Game Play Analysis IV

https://leetcode.com/problems/game-play-analysis-iv/description/미뤄뒀던 포스팅을 이제야.... 한 20개 더 밀려있다. 기존의 511. Game Play Analysis I 와 유사한 문제최초 접속 후, 다음날 다시 접속한 게임플레이어의 비율을 구하면 된다.  Example 1:Input: Activity table:+-----------+-----------+------------+--------------+| player_id | device_id | event_date | games_played |+-----------+-----------+------------+--------------+| 1 | 2 | 2016-0..

511. Game Play Analysis I

https://leetcode.com/problems/game-play-analysis-i/ 쉬운 문제이지만, 윈도우 함수를 간단히 활용해보기에 좋은 문제 # 플레이어의 최초 로그인 날짜 구하기 1) 기본 풀이 SELECT player_id , MIN(event_date) AS first_login FROM Activity GROUP BY player_id # 플레이어의 최초 로그인 날짜 구하기 2) 윈도우 함수 + WITH 문 활용 WITH login AS ( SELECT ROW_NUMBER() OVER (PARTITION BY player_id ORDER BY event_date) AS player_login , player_id , event_date AS first_login FROM Activi..

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가지 풀이법이 보인다. 셀프 조인 혹은 윈도우 함수 사용하기 ..