Coding/SQL 14

[LeetCode-SQL 50] 1978. Employees Whose Manager Left the Company

문제https://leetcode.com/problems/employees-whose-manager-left-the-company/?envType=study-plan-v2&envId=top-sql-50설명manager_id가 employee_id 목록에 없으면서, salary가 $30000 미만인 employee를 구하는 문제이다.먼저, manager_id가 employee_id 목록에 없는 employee_id를 구하고, 이 서브테이블을 바탕으로 salary 조건으로 최종 결과를 내면 된다. ✅ Left Join 개념 및 동작 방식Left Join은 왼쪽 테이블의 모든 행을 유지하면서, 오른쪽 테이블에서 일치하는 데이터를 찾는다. 만약 오른쪽 테이블에 일치하는 데이터가 없으면, 오른쪽 테이블의 컬럼 값..

Coding/SQL 2025.02.24

[LeetCode-SQL 50] 1907. Count Salary Categories

문제https://leetcode.com/problems/count-salary-categories/?envType=study-plan-v2&envId=top-sql-50설명처음에는 UNION ALL을 이용해서 income 컬럼을 기준으로 각 카테고리별로 count 는 구했지만 카테고리 컬럼을 추가하지 못했다.컬럼을 추가하려면, SELECT "value" AS 컬럼명 을 하면 된다!=> 행을 추가할 땐, UNION ALL, 열을 추가할 땐 SELECT 을 이용하자.구현# Write your MySQL query statement below( SELECT 'Low Salary' AS category, count(*) AS accounts_countFROM Accounts a WHERE a.income = ..

Coding/SQL 2025.01.21

[LeetCode-SQL 50] 180.Consecutive Numbers(윈도우 함수)

문제설명지금까지 필터링할 때 쓴 문법은 WHERE, HAVING 이다. 하지만 WHERE나 HAVING은 행 단위로 적용이 되기 때문에, 연속으로 3번 등장한 NUM을 골라야하는 열 기반 적용은 다른 방향성을 가져야한다. 1. JOIN을 이용하여 행 단위로 수정하기JOIN을 사용하면, 컬럼을 추가하여 컬럼 단위로 필터링을 할 수 있다.하지만 JOIN은 테이블과 테이블을 곱하기 때문에 복잡도에서는 O(N^2)이라고 할 수 있다. 2. WINDOW 함수를 이용하기 WINDOW 함수는 행과 행 간의 관계를 쉽게 정의하기 위해 만든 함수로, 랭킹 함수, 집계 함수, 행 순서 관련 함수, 비율 관련 함수 등 다양하다.WINDOW FUNCTION 중에서 그룹 내 행 순서 관련 함수인 LAG 과 LEAD를 사용해보자..

Coding/SQL 2025.01.16

[LeetCode-SQL 50] 1789. Primary Department for Each Employee

문제https://leetcode.com/problems/primary-department-for-each-employee/description/?envType=study-plan-v2&envId=top-sql-50 설명두 개의 경우의 수(부서가 2개 이상인 경우, 부서가 1개인 경우)로 나누어 생각할 수 있으므로, UNION ALL을 사용해주면 된다.구현# Write your MySQL query statement below( select e.employee_id, e.department_id from Employee e where e.primary_flag = 'Y' )UNION ALL( select e.employee_id, e.department_id from Employee e..

Coding/SQL 2025.01.14