# 先求出既有的,然后再去筛选掉没有的# 去重用不了内连接SELECT t1.customer_id,c.customer_name
FROM(SELECTdistinct customer_id
FROM Orders
WHERE product_name='A')t1
INNERJOIN(SELECTdistinct customer_id
FROM Orders
WHERE product_name='B')t2
ON t1.customer_id=t2.customer_id
INNERJOIN Customers c
ON t1.customer_id=c.customer_id
WHERE t1.customer_id NOTIN(SELECTdistinct customer_id
FROM Orders
WHERE product_name='C')
1.3 运行截图
2 苹果和桔子
2.1 题目内容
2.1.1 基本题目信息
2.1.2 示例输入输出
2.2 示例sql语句
# ①把sales表通过内连接拼接成每个日期下有几种水果的和对应销售数量表SELECT sale_date,SUM(IF(fruit='oranges',sold_num*-1,sold_num)) diff
FROM Sales
GROUPBY sale_date
2.3 运行截图
3 可以放心投资的国家
3.1 题目内容
3.1.1 基本题目信息1
3.1.2 基本题目信息2
3.1.3 示例输入输出
a 示例输入
b 示例输出
3.2 示例sql语句
# 各个国家的通话时长包含接听者和拨号者的时长# ①先求出所有可能的通话时长 ②找到编号对应的国家 ③根据国家名字后再依据HAVING去进行筛选SELECT t2.name country
FROM(SELECT p.id,t1.duration,c.name
FROM Person p
INNERJOIN
Country c
ONLEFT(p.phone_number,3)=c.country_code
INNERJOIN(SELECT caller_id c1,duration
FROM Calls
UNIONALLSELECT callee_id c1,duration
FROM Calls
)t1
ON p.id=t1.c1
)t2
GROUPBY t2.name
HAVINGAVG(t2.duration)>(SELECTAVG(duration)FROM Calls)