[ 알고리즘 ] LeetCode 2372. Calculate the Influence of Each Salesperson

이주 weekwith.me·2022년 8월 14일
0

알고리즘

목록 보기
63/73
post-thumbnail

블로그를 이전 중이라 완료되기 전까지는 벨로그에 작성할 계획입니다.
이후 모든 글은 https://weekwith.me 에 작성 예정이니 다른 글이 궁금하시다면 해당 링크를 통해 방문해주세요.

본 글은 [ LeetCode ] 2372. Calculate the Influence of Each Salesperson을 풀고 작성한 글입니다.

문제

테이블

Table: Salesperson

+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| salesperson_id | int     |
| name           | varchar |
+----------------+---------+
sales_person_id is the primary key for this table.
Each row in this table shows the ID of a salesperson and the price of one unit.

Table: Customer

+----------------+------+
| Column Name    | Type |
+----------------+------+
| customer_id    | int  |
| salesperson_id | int  |
+----------------+------+
customer_id is the primary key for this table.
salesperson_id is a foreign key from the Salesperson table.
Each row in this table shows the ID of a customer and the ID of the salesperson 

Table: Sales

+-------------+------+
| Column Name | Type |
+-------------+------+
| sale_id     | int  |
| customer_id | int  |
| price       | int  |
+-------------+------+
sale_id is the primary key for this table.
customer_id is a foreign key from the Customer table.
Each row in this table shows ID of a customer and the price they paid for the sale with sale_id.

요구사항

Write an SQL query to report the sum of prices paid by the customers of each salesperson. If a salesperson does not have any customers, the total value should be 0 .

Return the result table in any order.

풀이

접근법

Salesperson 테이블을 기준으로 Customer 테이블을 LEFT JOIN 구를 활용해 수평 연결하고 다시 연결된 Customer 테이블을 기준으로 Sales 테이블을 LEFT JOIN 구를 활용해 수평 연결하면 된다.

GROUP BY 구를 활용하여 salesperson_id 필드를 기준으로 필드를 묶고 SUM() 집계 함수를 사용하여 price 테이블의 합계를 구하면 되는데 이때 IFNULL() 함수를 사용해 NULL 값을 반환하는 경우에 대해 0 으로 치환하면 된다.

나의 풀이

접근법을 토대로 풀면 아래와 같다.


SELECT
    Salesperson.salesperson_id,
    Salesperson.name,
    IFNULL(SUM(Sales.price), 0) AS total
FROM Salesperson
LEFT JOIN Customer
USING (salesperson_id)
LEFT JOIN Sales
USING (customer_id)
GROUP BY Salesperson.salesperson_id;
profile
Be Happy 😆

0개의 댓글