LeetCode 数据库题解 7 (按照面试出现频率)

596.超过5名学生的课

有一个courses 表 ,有: student (学生) 和 class (课程)。

请列出所有超过或等于5名学生的课。

例如,表:

student class
A Math
B English
C Math
D Biology
E Math
F Computer
G Math
H Math
I Math

应该输出:

class
Math

Note:
学生在每个课中不应被重复计算。

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

思路
用 group by 将 class 分组,然后使用 having count(student)>=5 筛选出符合条件的课

SELECT
	* 
FROM
	courses 
GROUP BY
	class 
HAVING
	COUNT( student ) >=5

183.从不订购的客户

某网站包含两个表,Customers 表和 Orders 表。编写一个 SQL 查询,找出所有从不订购任何东西的客户。

Customers 表:

Id Name
1 Joe
2 Henry
3 Sam
4 Max

Orders 表:

Id CustomerId
1 3
2 1

例如给定上述表格,你的查询应返回:

Customers
Henry
Max

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

思路
用 left join 将 customer 和 orders 连接,统计 orders 为空的字段数

SELECT
	customers.`Name` Customers 
FROM
	customers
	LEFT JOIN orders ON customers.id = orders.CustomerId 
WHERE
	CustomerId IS NULL

你可能感兴趣的:(Leetcode题解,数据库,SQL)