#2372
Medium Database Calculate the influence of each salesperson
Database
83.8% acceptance
Mar 31, 2026
40
4
No description available.
Solution
Pandas
Time O(1)
Space O(1)
# Table: Salesperson
#
# +----------------+---------+
# | Column Name | Type |
# +----------------+---------+
# | salesperson_id | int |
# | name | varchar |
# +----------------+---------+
# salesperson_id contains unique values.
# Each row in this table shows the ID of a salesperson.
#
#
#
# Table: Customer
#
# +----------------+------+
# | Column Name | Type |
# +----------------+------+
# | customer_id | int |
# | salesperson_id | int |
# +----------------+------+
# customer_id contains unique values.
# salesperson_id is a foreign key (reference column) 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 contains unique values.
# customer_id is a foreign key (reference column) 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 a solution 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.
#
# The result format is shown in the following example.
#
# Example 1:
# Input:
# Salesperson table:
# +----------------+-------+
# | salesperson_id | name |
# +----------------+-------+
# | 1 | Alice |
# | 2 | Bob |
# | 3 | Jerry |
# +----------------+-------+
# Customer table:
# +-------------+----------------+
# | customer_id | salesperson_id |
# +-------------+----------------+
# | 1 | 1 |
# | 2 | 1 |
# | 3 | 2 |
# +-------------+----------------+
# Sales table:
# +---------+-------------+-------+
# | sale_id | customer_id | price |
# +---------+-------------+-------+
# | 1 | 2 | 892 |
# | 2 | 1 | 354 |
# | 3 | 3 | 988 |
# | 4 | 3 | 856 |
# +---------+-------------+-------+
# Output:
# +----------------+-------+-------+
# | salesperson_id | name | total |
# +----------------+-------+-------+
# | 1 | Alice | 1246 |
# | 2 | Bob | 1844 |
# | 3 | Jerry | 0 |
# +----------------+-------+-------+
# Explanation:
# Alice is the salesperson for customers 1 and 2.
# - Customer 1 made one purchase with 354.
# - Customer 2 made one purchase with 892.
# The total for Alice is 354 + 892 = 1246.
#
# Bob is the salesperson for customers 3.
# - Customer 1 made one purchase with 988 and 856.
# The total for Bob is 988 + 856 = 1844.
#
# Jerry is not the salesperson of any customer.
# The total for Jerry is 0.
import pandas as pd
def calculate_influence(salesperson: pd.DataFrame, customer: pd.DataFrame, sales: pd.DataFrame) -> pd.DataFrame:
merged = customer.merge(sales, on='customer_id', how='left')
totals = merged.groupby('salesperson_id')['price'].sum().reset_index()
totals.columns = ['salesperson_id', 'total']
result = salesperson.merge(totals, on='salesperson_id', how='left')
result['total'] = result['total'].fillna(0).astype(int)
return result[['salesperson_id', 'name', 'total']]