LeetCode刷题-数据库(MySQL)-1076. Project Employees II

本文介绍了一种SQL查询技巧,用于找出拥有最多员工的项目。通过分组和聚合函数,结合子查询找到最大员工数的项目ID。

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

1076. Project Employees II

一、题目描述

Table: Project

Column NameType
project_idint
employee_idint

(project_id, employee_id) is the primary key of this table.
employee_id is a foreign key to Employee table.

Table: Employee

Column NameType
employee_idint
namevarchar
experience_yearsint

employee_id is the primary key of this table.

Write an SQL query that reports all the projects that have the most employees.

The query result format is in the following example:

Project table:

project_idemployee_id
11
12
13
21
24

Employee table:

employee_idnameexperience_years
1Khaled3
2Ali2
3John1
4Doe2

Result table:

project_id
1

The first project has 3 employees while the second one has 2.

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

二、思路分析

本题要查询所有项目(project)中拥有最多雇员的项目。需注意以下两点:

  1. 要找出每个项目中的雇员数量,需要对 project_id 使用GROUP BY,然后对每个项目的雇员进行加和。因project表的主键是(project_id, employee_id),所以不会存在重复条目。
  2. 另外一点是,如果存在多个项目的雇员数相等且最多,为避免答案不全,就需要先计算出最大雇员数,然后再查询雇员数与最大雇员数相等的项目即可。

三、代码实现

SELECT
	project_id
FROM
	Project
GROUP BY
	 project_id
HAVING 
	COUNT(*) = (
		SELECT
			COUNT(employee_id) cnt
		FROM
			Project
		GROUP BY
			project_id
		ORDER BY
			cnt DESC
		LIMIT 1
	);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值