LeetCode sql题解 6 (按照面试出现频率)

1082. 销售分析 I

产品表:Product

Column Name Type
product_id int
product_name varchar
unit_price int

product_id 是这个表的主键.
销售表:Sales

Column Name Type
seller_id int
product_id int
buyer_id int
sale_date date
quantity int
price int

这个表没有主键,它可以有重复的行.
product_id 是 Product 表的外键.

编写一个 SQL 查询,查询总销售额最高的销售者,如果有并列的,就都展示出来。

查询结果格式如下所示:

Product 表:

product_id product_name unit_price
1 S8 1000
2 G4 800
3 iPhone 1400

Sales 表:

seller_id product_id buyer_id sale_date quantity price
1 1 1 2019-01-21 2 2000
1 2 2 2019-02-17 1 800
2 2 3 2019-06-02 1 800
3 3 4 2019-05-13 2 2800

Result 表:

seller_id
1
3

Id 为 1 和 3 的销售者,销售总金额都为最高的 2800。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sales-analysis-i
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路

  1. 统计每个销售员的总业绩
SELECT
	seller_id,
	sum( price ) AS yeji 
FROM
	Sales 
GROUP BY
	seller_id;
  1. 然后找到最高的业绩
SELECT
	sum( price ) AS ye_ji 
FROM
	Sales 
GROUP BY
	seller_id 
ORDER BY
	ye_ji DESC 
	LIMIT 1
  1. 从原始表中找到业绩与这个最高业绩相等的 seller_id
SELECT
	seller_id 
FROM
	sales 
GROUP BY
	seller_id 
HAVING
	SUM( price ) = ( SELECT max( sales_total ) FROM ( SELECT seller_id, SUM( price ) AS sales_total FROM sales GROUP BY seller_id ) sub1 )
1098.小众书籍

书籍表 Books:

Column Name Type
book_id int
name varchar
available_from date

book_id 是这个表的主键。
订单表 Orders:

Column Name Type
order_id int
book_id int
quantity int
dispatch_date date

order_id 是这个表的主键。
book_id 是 Books 表的外键。

你需要写一段 SQL 命令,筛选出订单总量 少于10本 的 书籍 。

注意:不考虑 上架(available from)距今 不满一个月 的书籍。并且 假设今天是 2019-06-23 。

下面是样例输出结果:

Books 表:

book_id name available_from
1 “Kalila And Demna” 2010-01-01
2 “28 Letters” 2012-05-12
3 “The Hobbit” 2019-06-10
4 “13 Reasons Why”<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值