列表

详情


1069. 产品销售分析 II

销售表:Sales

+-------------+-------+
| Column Name | Type  |
+-------------+-------+
| sale_id     | int   |
| product_id  | int   |
| year        | int   |
| quantity    | int   |
| price       | int   |
+-------------+-------+
sale_id 是这个表的主键(具有唯一值的列)。
product_id 是 Product 表的外键(reference 列)。
该表的每一行显示产品product_id在某一年的销售情况。
请注意价格是每单位的。

产品表:Product

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| product_id   | int     |
| product_name | varchar |
+--------------+---------+
product_id 是这个表的主键(具有唯一值的列)。
该表的每一行表示每种产品的产品名称。

 

编写解决方案,统计每个产品的销售总量。

返回结果表 无顺序要求

结果格式如下例子所示。

 

示例 1:

输入:
Sales 表:
+---------+------------+------+----------+-------+
| sale_id | product_id | year | quantity | price |
+---------+------------+------+----------+-------+ 
| 1       | 100        | 2008 | 10       | 5000  |
| 2       | 100        | 2009 | 12       | 5000  |
| 7       | 200        | 2011 | 15       | 9000  |
+---------+------------+------+----------+-------+
Product 表:
+------------+--------------+
| product_id | product_name |
+------------+--------------+
| 100        | Nokia        |
| 200        | Apple        |
| 300        | Samsung      |
+------------+--------------+
输出:
+--------------+----------------+
| product_id   | total_quantity |
+--------------+----------------+
| 100          | 22             |
| 200          | 15             |
+--------------+----------------+

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
# Write your MySQL query statement below

mysql 解法, 执行用时: 757 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 16:56:52

# Write your MySQL query statement below
SELECT 
    product_id,
    sum(quantity) total_quantity 
FROM 
    sales 
GROUP BY product_id;

mysql 解法, 执行用时: 998 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 16:56:35

select
    product_id,
    sum(quantity) as total_quantity
from Sales
group by product_id
# group by 1 是一样的
# 注意缩进提升可读性

pythondata 解法, 执行用时: 284 ms, 内存消耗: 61.9 MB, 提交时间: 2023-10-15 16:56:23

import pandas as pd

def sales_analysis(sales: pd.DataFrame, product: pd.DataFrame) -> pd.DataFrame:
    return sales.groupby(['product_id'])['quantity'].sum()\
                       .rename('total_quantity').reset_index()

# to_frame()不行! index的内容被自动忽略了

上一题