본문 바로가기
Data Analysis/Query

리트코드 : 1378. Replace Employee ID With The Unique Identifier

by 베짱이28호 2024. 8. 13.

리트코드 : 1378. Replace Employee ID With The Unique Identifier

문제


Table: Employees

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| name          | varchar |
+---------------+---------+
id is the primary key (column with unique values) for this table.
Each row of this table contains the id and the name of an employee in a company.


Table: EmployeeUNI

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| unique_id     | int     |
+---------------+---------+
(id, unique_id) is the primary key (combination of columns with unique values) for this table.
Each row of this table contains the id and the corresponding unique id of an employee in the company.


Write a solution to show the unique ID of each user, If a user does not have a unique ID replace just show null.

Return the result table in any order.

The result format is in the following example.



Example 1:

Input: 
Employees table:
+----+----------+
| id | name     |
+----+----------+
| 1  | Alice    |
| 7  | Bob      |
| 11 | Meir     |
| 90 | Winston  |
| 3  | Jonathan |
+----+----------+
EmployeeUNI table:
+----+-----------+
| id | unique_id |
+----+-----------+
| 3  | 1         |
| 11 | 2         |
| 90 | 3         |
+----+-----------+
Output: 
+-----------+----------+
| unique_id | name     |
+-----------+----------+
| null      | Alice    |
| null      | Bob      |
| 2         | Meir     |
| 3         | Winston  |
| 1         | Jonathan |
+-----------+----------+
Explanation: 
Alice and Bob do not have a unique ID, We will show null instead.
The unique ID of Meir is 2.
The unique ID of Winston is 3.
The unique ID of Jonathan is 1.
  • 각 유저의 id가 unique인지 판별하고 unique하면 id를, 아니면 null을 반환하는 문제

 

문제 풀이

MySQL

select u.unique_id, e.name
from employees e
left join employeeUNI u on e.id = u.id;
  • 기본 left join 문제이다.
  • 행 수가 더 많은 emp테이블을 기준으로 emp uni와 left join을 해주면 된다.

Pandas

import pandas as pd

def replace_employee_id(employees: pd.DataFrame, employee_uni: pd.DataFrame) -> pd.DataFrame:
    grouped = pd.merge(employees,employee_uni, how='left')
    return grouped[['unique_id','name']]
  • 기본 문제
  • pd.merge에 left join으로 조인진행

코멘트

  • .

댓글