暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

单挑力扣(LeetCode)SQL笔试题:2372. 计算每个销售人员的影响力(难度:中等)

原创 fizz 2023-01-08
464
题目:2372. 计算每个销售人员的影响力
(通过次数402 | 提交次数521,通过率77.16%)
表:Salesperson+----------------+---------+| Column Name    | Type    |+----------------+---------+| salesperson_id | int     || name           | varchar |+----------------+---------+sales_person_id 是这个表的主键。这个表中的每一行都显示一个销售人员的 ID。表:Customer+----------------+------+| Column Name    | Type |+----------------+------+| customer_id    | int  || salesperson_id | int  |+----------------+------+customer_id 是这个表的主键。salesperson_id 是一个来自于 Salesperson 表的外键Customer 表中的每一行都显示了一个客户的 ID 和销售人员的 ID。表:Sales+-------------+------+| Column Name | Type |+-------------+------+| sale_id     | int  || customer_id | int  || price       | int  |+-------------+------+sale_id 是这个表的主键。customer_id 是一个来自于 Customer 表的外键。Sales 表中的每一行都显示了一个客户的 ID 以及他们在 sale_id 指代的交易中所支付的金额。
编写一个 SQL 查询用来报告每个销售人员的客户所支付的价格总和。如果销售人员没有任何客户,则总值应该为 0 。以 任意顺序 返回结果表。查询结果格式如下所示。
示例 1:输入: Salesperson 表:+----------------+-------+| salesperson_id | name |+----------------+-------+| 1 | Alice || 2 | Bob || 3 | Jerry |+----------------+-------+Customer 表:+-------------+----------------+| customer_id | salesperson_id |+-------------+----------------+| 1 | 1 || 2 | 1 || 3 | 2 |+-------------+----------------+Sales 表:+---------+-------------+-------+| sale_id | customer_id | price |+---------+-------------+-------+| 1 | 2 | 892 || 2 | 1 | 354 || 3 | 3 | 988 || 4 | 3 | 856 |+---------+-------------+-------+输出: +----------------+-------+-------+| salesperson_id | name | total |+----------------+-------+-------+| 1 | Alice | 1246 || 2 | Bob | 1844 || 3 | Jerry | 0 |+----------------+-------+-------+解释: Alice 是客户 1 和客户 2 的销售人员。 - 客户 1 一次购买花费了 354。 - 客户 2 一次购买花费了 892。Alice 的总数是 354 + 892 = 1246。
Bob 是客户 3 的销售人员。 - 客户 3 一次购买花费了 988,另一次购买花费了 856。Bob 的总数是 988 + 856 = 1844。
Jerry 没有客户。Jerry 的总数是 0。
来源:力扣(LeetCode)链接:https://leetcode.cn/problems/calculate-the-influence-of-each-salesperson
复制
#测试数据Create table If Not Exists Salesperson (salesperson_id int, name varchar(30));Create table If Not Exists Customer (customer_id int, salesperson_id int);Create table If Not Exists Sales (sale_id int, customer_id int, price int);
insert into Salesperson (salesperson_id, name) values ('1', 'Alice');insert into Salesperson (salesperson_id, name) values ('2', 'Bob');insert into Salesperson (salesperson_id, name) values ('3', 'Jerry');
insert into Customer (customer_id, salesperson_id) values ('1', '1');insert into Customer (customer_id, salesperson_id) values ('2', '1');insert into Customer (customer_id, salesperson_id) values ('3', '2');
insert into Sales (sale_id, customer_id, price) values ('1', '2', '892');insert into Sales (sale_id, customer_id, price) values ('2', '1', '354');insert into Sales (sale_id, customer_id, price) values ('3', '3', '988');insert into Sales (sale_id, customer_id, price) values ('4', '3', '856');
复制
解题思路:
这道题涉及的表比较多。
Salesperson表中保存了所有的销售人员。
Customer表中保存了所有的客户,以及服务客户的销售人员ID。
Sales表中保存了所有客户的订单信息,包括订单金额。
题目要求:计算出每个销售人员的总销售额。
那么,首先,我们需要知道每个销售人员服务的所有客户。
然后,通过客户获取客户的所有订单。
最后,根据销售人员分组汇总统计即可。
参考SQL:
select    a.salesperson_id,    a.name,    coalesce(sum(c.price),0) totalfrom Salesperson aleft join Customer bon a.salesperson_id = b.salesperson_idleft join Sales con b.customer_id = c.customer_idgroup by a.salesperson_id;
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论