SQL找最大值的问题

问题:

编写一个SQL查询,报告所有雇员最多的项目。

Project table:
+-------------+-------------+
| project_id  | employee_id |
+-------------+-------------+
| 1           | 1           |
| 1           | 2           |
| 1           | 3           |
| 2           | 1           |
| 2           | 4           |
+-------------+-------------+

解法1

解题思路:
使用Having、Group、All
1)使用Group计算统计的每个项目的数值
2)直接使用 HAVING COUNT(*) >= ALL(…) 找出最大值

SELECT
	project_id
FROM
	Project
GROUP BY project_id
HAVING COUNT(*) >= ALL(
	SELECT
		COUNT(*)
	FROM
		Project
	GROUP BY project_id
);

解法2 (having)

解题思路:
Group
1)用Group 和Count 找到最大值是多少
2)使用Having,根据最大的数值返回答案

SELECT
	project_id
FROM
	Project
GROUP BY project_id
HAVING COUNT(*) = (
	SELECT
		COUNT(*)
	FROM
		Project
	GROUP BY project_id
	ORDER BY COUNT(*) DESC
	LIMIT 1

原链接:https://leetcode-cn.com/problems/project-employees-ii/solution/1076-xiang-mu-yuan-gong-ii-by-eric-345/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值