Leetcode 다시풀기 (hard) 185 , (easy) 196,197
by darami185. Department Top Three Salaries
(1) 나의 풀이
SELECT d.name as Department
,a.name as Employee
,a.salary as Salary
FROM (
SELECT id
,name
,salary
,departmentid
,DENSE_RANK() OVER (PARTITION BY departmentId ORDER BY salary DESC)rank
FROM Employee
)a
JOIN Department d ON a.departmentid=d.id
WHERE a.rank <4
- 한번에 풀었다 ! 호호
배운점, 인사이트
- dense_rank를 생각해내고 이걸 서브 쿼리로 묶는게 포인트 아이디어를 내는게 관건이었던 것 같다.
- dense ransk partition by 생각해낸 것이 좋았다. 윈도우 함수니까 MS sql에서 가능하기 때문에 mysql에서 사용하지 않도록 주의 하기
- 다양한 풀이가 있다는 것을 알게 되었다. 쓸데 없는 복잡한 로직은 불필요하지만 most votes 순으로 보는 것이 좋다.
DELETE p1
FROM Person p1, Person p2
WHERE p1.Email = p2.Email
AND p1.Id > p2.Id
- ID가 최소인 조건들을 고려해야 함 DELETE 함수에 익숙해질 것
SELECT a.id
FROM (
SELECT id
,recorddate
,temperature
,(LAG(temperature,1) OVER (ORDER BY recorddate))b
FROM Weather
)a
WHERE a.temperature > a.b
- 처음에 LEAD를 썼다가 에러가 나왔다. 이상할 때는 서브 쿼리안의 쿼리를 출력해보는게 도움이 됨!
- ORDER BY 와 LAG/LEAD 안의 것 분리!
'SQL > Leetcode' 카테고리의 다른 글
Leetcode 다시풀기 1141 dau (0) | 2022.06.27 |
---|---|
Leetcode 다시풀기 607,627,1084 (0) | 2022.06.24 |
Leetcode 다시 풀기 584, 586 mysql 문제 풀이 (0) | 2022.06.24 |
Leetcode 6.22 다시 풀기 180,181,182,183,184 +성능 고민 (0) | 2022.06.22 |
6.20 Leetcode 다시풀기 176,178,1050,1068,1069 (0) | 2022.06.19 |
블로그의 정보
다람
darami