hackerrank 보다 leetcode 문제들이 더 깔끔하고 딱 배워야 하는 주제별로 문제가 잘 나와있는 거 같다.
사실 그냥 서버가 더 빨라서 좋다.
employees 테이블과, salaries 테이블에서 누락값을 갖고 있는 employee_id를 출력해라
1. name 필드가 NULL인 id
2. 혹은 salary 필드가 NULL인 id
처음 내가 쓴 쿼리
(select employee_id from employees e
left join salaries s on e.employee_id = s.employee_id
where s.salary is NULL)
union
(select employee_id from employees e
right join salaries s on e.employee_id = s.employee_id
where e.name is NULL)
order by employee_id
근데 반복되는 구문이 좀 많은 거 같아서 discussion을 봤는데 다음처럼 좀 더 깔끔하게 쓸 수 있을 거 같다
select employee_id
from
((select * from employees left join salaries using(employee_id))
union
(select * from employees right join salaries using(employee_id)))as T
where T.name is NULL or T.salary is NULL
order by 1
훨씬 깔끔해졌다! 가독성이 높아졌다
우선 using
을 써서 join on
구문을 짧게 썼는데 필드 이름이 똑같을 경우(employee_id) using(field)
로 사용이 가능하다
그리고 order by 1
으로 첫번째 칼럼으로 정렬한다고 축약해서 쓸 수 있다.