tak's data blog

LeetCode 문제풀이 (176, 178, 180, 181, 182, 183) 본문

SQL

LeetCode 문제풀이 (176, 178, 180, 181, 182, 183)

hyuntaek 2022. 6. 24. 00:04
반응형
SMALL

 

리트코드 SQL문제는 단계별로 주어진 날짜에 따라 정해진 문제를 푸는 형식이 있고,

결제없이 무료로 제공되는 문제들이 있다! 예전에도 풀어보았지만 반복적으로 학습해야 순간적인 상황에 대처할 수 있으므로 복습을 해보겠다!

 

 

 

#176

SELECT max(salary) as 'SecondHighestSalary'
FROM  Employee
WHERE salary != (SELECT max(salary)
                 FROM Employee) 
# != 말고도 not in 등으로 대체가 가능하다!

 

 

 

#178

Select score,
       Dense_rank() Over (Order By Score Desc) `Rank`
From Scores

# Dense_rank () 뒤에 항상 over를 빼먹는다 실수를 줄여야지

 

 

 

#180

SELECT DISTINCT L1.NUM as 'ConsecutiveNums'
FROM Logs L1,
     Logs L2,
     Logs L3
WHERE L1.Id = L2.Id - 1    
AND   L2.Id = L3.Id - 1
AND   L1.Num = L2.Num
AND   L2.Num = L3.Num

# 같은 테이블을 3개 생성해서 where 조건으로 줄 수 있다는 생각을 못했다. 솔루션을 보고 알게 되었다.

 

 

 

#181

SELECT e1.name as 'Employee'
FROM Employee e1 inner join Employee e2
     on e1.managerId = e2.id
WHERE e1.salary > e2.salary

 

 

 

#182

SELECT email as 'Email'
FROM Person
GROUP BY email
HAVING count(email) >= 2

# distinct로 중복을 제거할 수 있지만, 집계 함수로 2개 이상인 raw를 뽑아내 해결하였다.

 

 

 

#183

SELECT name as 'Customers'
FROM Customers
WHERE name not in (SELECT c.name 
                   FROM Customers c inner join Orders o
                   on c.id = o.customerId)
                   
# 내 풀이는 이러하지만 ()괄호 안에 두개의 테이블 조인이 아니라 orders 테이블 하나만으로도 풀이가 가능하다.

 

 

 

이거면 됐다!라는 안일한 생각이 제일 좋지 않은 것 같다. 이 생각하나로 제대로 공부를 하지 못하여서 상반기에 꿈의 그리던 기업에 기회를 날렸던 것을 생각하면 아직도 후회가 있다. 하지만 후회해서 변하는건 없으니 여러 사이트의 문제를 풀어보면서 내것으로 만들어야겠다!!

반응형
LIST

'SQL' 카테고리의 다른 글

LeetCode 문제풀이 (262)  (0) 2022.06.26
LeetCode 문제풀이 (184, 185)  (0) 2022.06.26
[SQL] HackerRank - Ollivander's Inventory  (0) 2022.06.05
[SQL] HackerRank - New Companies  (0) 2022.04.03
[SQL] HackerRank - Challenges  (0) 2022.03.17