技术问询:查询2013年每位卖家销售PS4的总收入(quantity*product_price)
解决PS4 2013年卖家总收入查询问题
嘿,针对你要查询每位卖家在2013年销售PS4的总收入这个需求,我整理了完整的SQL解决方案,一步步给你拆解:
核心思路
我们需要关联三个表:seller(卖家信息)、product(产品信息)、sale(销售记录),然后完成以下关键操作:
- 筛选出产品为PS4的销售记录
- 筛选出销售日期在2013年的记录
- 按卖家分组,计算每组的
quantity * product_price总和(也就是总收入)
完整SQL查询语句
SELECT s.id AS seller_id, s.seller_name, SUM(sa.quantity * p.product_price) AS total_revenue FROM seller s JOIN sale sa ON s.id = sa.seller_id JOIN product p ON sa.product_id = p.id WHERE p.product_name = 'PS4' AND YEAR(sa.date) = 2013 GROUP BY s.id, s.seller_name;
语句细节解释
- JOIN关联表:用
INNER JOIN把三个表通过外键关联起来(卖家ID、产品ID),确保只保留有对应PS4销售记录的卖家 - WHERE筛选条件:
p.product_name = 'PS4'精准锁定目标产品YEAR(sa.date) = 2013提取日期中的年份,筛选2013年的销售数据
- GROUP BY分组:按卖家的ID和姓名分组,保证每个卖家在结果中只出现一行
- SUM计算总收入:把每条符合条件的销售记录的
数量*单价相加,得到该卖家的总营收
可选扩展:包含无PS4销售的卖家
如果你想显示所有卖家(哪怕2013年没卖过PS4的,总收入显示0),可以把INNER JOIN改成LEFT JOIN,并给SUM加个默认值处理空值:
SELECT s.id AS seller_id, s.seller_name, COALESCE(SUM(sa.quantity * p.product_price), 0) AS total_revenue FROM seller s LEFT JOIN sale sa ON s.id = sa.seller_id AND YEAR(sa.date) = 2013 LEFT JOIN product p ON sa.product_id = p.id AND p.product_name = 'PS4' GROUP BY s.id, s.seller_name;
这里用COALESCE把无销售记录时的NULL转换成0,结果更直观易读。
内容的提问来源于stack exchange,提问作者andreask
相关产品推荐
相关产品推荐

