Algorithm/leetCode 6

[세무민의 코딩일기] LeetCode Exchange Seats 문제풀이

오늘 풀어볼 문제는 LeetCode의 Exchange Seats 문제입니다. 1. 문제 및 예시 2. 문제풀이 이번 문제는 앞뒤로 바꾸는 쿼리 결과를 조회하면된다. 그렇다면 곰곰히 생각해보면 2의 배수의 경우는 앞뒤로 변경이 가능하지만 2의 배수에서 -1인 경우는 마지막의 값은 변경이 불가능하다. 이 말은 즉슨 Mod(ID, 2) = 1 공식에 따라서 문제를 풀면 된다. 3. 코드 /** * LeetCode : Exchange Seats * URL :https://leetcode.com/problems/exchange-seats/ */ SELECT ID, IFNULL(CASE WHEN MOD(ID, 2) != 0 THEN LEAD(student) over() ELSE LAG(student) over() ..

Algorithm/leetCode 2022.02.11

[세무민의 코딩일기] LeetCode Trips and Users 문제풀이

오늘 포스팅 할 내용은 LeetCode에서 Trips and Users문제를 풀어봤습니다. 1. 문제 설명 2. 문제 예시 3. 문제 풀이 이번 문제는 driver_id와 client_id만 잘 구분해주면 된다. 말 그대로 cancel의 확률을 구하면 되는데 사용자 중 banned가 yes라면 제외한 확률을 구해주면 된다. 그래서 날짜별로 평균값을 구해주면 되는 문제이다. /** * LeetCode : Trips and Users * URL :https://leetcode.com/problems/trips-and-users/ */ /* * AVG 사용 */ select trip_totals.day, ,round(avg(trip_totals.status like '%cancel%'), 2) as "Canc..

Algorithm/leetCode 2022.01.17

[세무민의 코딩일기] LeetCode Rising Temperature문제풀이

오늘 포스팅 할 내용은 LeetCode 문제 중 하나인 Rising Temperature문제를 풀어봤습니다. 1. 문제 설명 2. 문제 예시 3. 문제 풀이 이번 문제는 전일 대비 온도가 높은 ID를 출력해주면 됩니다. 그렇다면 해당 문제를 접근한는 방법은 현재일과 현재일에서 DATE_ADD를 통해 1일을 추가한 일자와 비교하여 온도를 비교해주면 된다. 또 다른 방법은 DATEDIFF를 이용하여 날짜의 차이가 1일인 경우 온도를 비교해주면 된다. /** * LeetCode : Rising Temperature * URL : https://leetcode.com/problems/rising-temperature/ */ # DATEDIFF를 통해 날짜의 차이를 구하는 방식 select w1.id from W..

Algorithm/leetCode 2022.01.13

[세무민의 코딩일기] LeetCode Duplicate Emails 문제풀이

오늘 포스팅 할 내용은 LeetCode 문제 중 하나인 Duplicate Emails문제를 풀어봤습니다. 1. 문제 설명 2. 문제 예시 3. 문제 풀이 이번 문제는 이메일 중복이 존재한다면 해당 중복 이메일을 출력해주면 되는 문제입니다. 이 문제에서는 가장 쉽게 할 수 있는건 이메일로 Group by를 한 뒤 1개 이상인 이메일을 출력해주면 됩니다. 다른 방법으로는 서브쿼리에서 email의 count를 구하여 1개 이상의 값을 구하면 됩니다. # 서브 쿼리 사용 select duals.email as Email from ( SELECT id, email, count(email) as numEmail from Person group by email ) as duals where duals.numEmail..

Algorithm/leetCode 2022.01.11

[세무민의 코딩일기] LeetCode Second Highest Salary 문제풀이

오늘 포스팅 할 내용은 LeetCode 문제 중 하나인 Second Highest Salary 문제를 풀어봤습니다. 1. 문제 설명 2. 문제 예시 3. 문제 풀이 이번 문제는 말 그대로 2번째로 급여가 높은 사용자의 급여를 출력하면 되며 만약에 2번째로 높은 급여가 없는 경우 Null을 출력하면 된다. 위의 경우를 가장 쉽게 생각해보면 가장 Max의 값을 제외한 값이 2번째의 값이다. 따라서 Max인 값을 제외하고 가장 첫번째의 값을 출력하면 된다. # Time : 482ms SELECT max(salary) as SecondHighestSalary FROM Employee where not salary = (select max(salary) from Employee) # Time : 735ms SEL..

Algorithm/leetCode 2022.01.09

[세무민의 코딩일기] LeetCode Nth Highest Salary 문제풀이

오늘 포스팅 할 내용은 LeetCode에 있는 Nth Highest Salary 문제를 풀어봤습니다. 1. 문제 설명 2. 문제 및 예시 3. 문제 풀이 이번 문제는 해석하면 N이라는 특정 값을 입력했을 때 해당 순위의 Salary를 출력하고 없는 경우라면 Null을 출력하는 문제이다. 또한 이번 문제는 N을 입력을 해주기 때문에 DB Function을 이용한 문제라는 것도 알아야 한다. CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT BEGIN RETURN ( SELECT distinct salary FROM (SELECT id, salary, dense_rank() over(order by salary desc) as totals from Employ..

Algorithm/leetCode 2022.01.08