day12 SQL基础-连接

本文提供了几个SQL查询示例,包括找出2020年未卖出任何商品的卖家、查找MyNumbers表中的唯一数字、获取每位学生的最高成绩及对应科目,以及识别购买特定组合产品的顾客。这些查询涉及到了数据筛选、分组、排序和窗口函数等概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1607. 没有卖出的卖家
在这里插入图片描述
写一个SQL语句, 报告所有在2020年度没有任何卖出的卖家的名字.

返回结果按照 seller_name 升序排列.

查询结果格式如下例所示.
在这里插入图片描述

select
	seller_name
from 
	Seller_1607 as s
where 
	s.seller_id not in(
	select
		distinct s.seller_id  
	from 
		Orders_1607 as o left join Seller_1607 as s on s.seller_id=o.seller_id
	where 
		year(sale_date)='2020'
		)
order by
    seller_name asc

619. 只出现一次的最大数字
在这里插入图片描述
单一数字 是在 MyNumbers 表中只出现一次的数字。

请你编写一个 SQL 查询来报告==最大的 单一数字 ==。如果不存在 单一数字 ,查询需报告 null 。

查询结果如下例所示。
在这里插入图片描述
在这里插入图片描述

select 
	(select
		m.num
	 from 
		MyNumbers_619 as m
	 group by 
		m.num
	 having 
		count(*)=1
	 order by 
		m.num desc
	 limit 1) as num

1112. 每位学生的最高成绩
在这里插入图片描述
编写一个 SQL 查询,查询每位学生获得的最高成绩和它所对应的科目,==若科目成绩并列,取 course_id 最小的一门。==查询结果需按 student_id 增序进行排序。

以 任意顺序 返回结果表。

查询结果格式如下所示。
在这里插入图片描述

rank() : 阶梯排序-前两个是并列的1,接下来就是第3名
dense_rank(): 连续排序-前两个是并列的1,接下来就是第2名
row_number(): 不会出现重复的排序
<窗口函数> over (partition by <分组列名> order by <排序列名>)

select
	student_id,
	course_id ,
	grade 
from (
	select
		*,
		row_number() over(partition by student_id order by grade desc, course_id asc) as ranking
	from
		Enrollments_1112
	) as t
where 
	ranking < 2

1398. 购买了产品 A 和产品 B 却没有购买产品 C 的顾客
在这里插入图片描述
请你设计 SQL 查询来报告购买了产品 A 和产品 B 却没有购买产品 C 的顾客的 ID 和姓名( customer_id= 和 =customer_name ),我们将基于此结果为他们推荐产品 C 。
您返回的查询结果需要按照== customer_id 排序。==
在这里插入图片描述

select
	c.customer_id, 
	c.customer_name  
from
	Customers_1398 as c left join Orders_1398 as o on o.customer_id = c.customer_id
group by
	o.customer_id
having
	sum(o.product_name='A')>0 and sum(o.product_name='B')>0 and sum(o.product_name='C')=0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值