SQL-每日一题【607.销售员】
发布人:shili8
发布时间:2025-01-30 23:15
阅读次数:0
**SQL 每日一题607: 销售员**
在一个销售团队中,我们需要统计每个销售员的销售额、销售数量以及销售员的等级。我们有以下信息:
* **sales**: 表示销售数据,包含以下字段:
* **id**(整型):销售记录的唯一标识符。
* **employee_id**(整型):销售员的 ID。
* **product_name**(字符串):销售产品的名称。
* **sale_amount**(浮点数):销售金额。
* **sale_quantity**(整型):销售数量。
* **employees**: 表示销售员信息,包含以下字段:
* **id**(整型):销售员的 ID。
* **name**(字符串):销售员的姓名。
* **level**(整型):销售员的等级。
要求:为每个销售员计算销售额、销售数量以及销售员的等级,并将结果存储在一个新的表中。
**解决方案**
首先,我们需要根据销售员 ID 将销售数据与销售员信息关联起来。我们可以使用 SQL 的 JOIN 操作来实现这一点。
sqlSELECT e.id, e.name, s.sale_amount, s.sale_quantityFROM employees eINNER JOIN sales s ON e.id = s.employee_id;
接下来,我们需要为每个销售员计算销售额和销售数量。我们可以使用 SQL 的 GROUP BY 和 SUM 操作来实现这一点。
sqlSELECT e.id, e.name, SUM(s.sale_amount) AS total_sale_amount, SUM(s.sale_quantity) AS total_sale_quantityFROM employees eINNER JOIN sales s ON e.id = s.employee_idGROUP BY e.id, e.name;
最后,我们需要为每个销售员计算等级。我们可以使用 SQL 的 CASE 操作来实现这一点。
sqlSELECT e.id, e.name, SUM(s.sale_amount) AS total_sale_amount, SUM(s.sale_quantity) AS total_sale_quantity, CASE WHEN SUM(s.sale_amount) >10000 THEN '高级' WHEN SUM(s.sale_amount) BETWEEN5000 AND10000 THEN '中级' ELSE '初级' END AS levelFROM employees eINNER JOIN sales s ON e.id = s.employee_idGROUP BY e.id, e.name;
**结果**
最终,我们需要将结果存储在一个新的表中。我们可以使用 SQL 的 CREATE TABLE 和 INSERT INTO 操作来实现这一点。
sqlCREATE TABLE sales_employees ( id INT, name VARCHAR(255), total_sale_amount DECIMAL(10,2), total_sale_quantity INT, level VARCHAR(255) ); INSERT INTO sales_employees (id, name, total_sale_amount, total_sale_quantity, level) SELECT e.id, e.name, SUM(s.sale_amount) AS total_sale_amount, SUM(s.sale_quantity) AS total_sale_quantity, CASE WHEN SUM(s.sale_amount) >10000 THEN '高级' WHEN SUM(s.sale_amount) BETWEEN5000 AND10000 THEN '中级' ELSE '初级' END AS levelFROM employees eINNER JOIN sales s ON e.id = s.employee_idGROUP BY e.id, e.name;
**总结**
在本题中,我们需要为每个销售员计算销售额、销售数量以及销售员的等级,并将结果存储在一个新的表中。我们使用 SQL 的 JOIN、GROUP BY、SUM 和 CASE 操作来实现这一点。最终,我们创建了一个新表并插入了数据。