mysql - MySQL:为什么这两个是错的?(组函数使用无效,使用have()后什么都不选)
问题描述
Credit:Leetcode_1076.Project Employees II 这里是样例表 Project 表:
project_id | employee_id
1 | 1
1 | 2
1 | 3
2 | 1
2 | 4
(project_id, employee_id) 是这个表的主键。
我尝试了几种方法,并通过使用 dense_rank() 设法找到了正确的方法;但是,我仍然不明白为什么这两种语法选择员工人数最多的project_id是错误的:
1.返回null:{“headers”:[“project_id”,“n”],“values”:[]}
select project_id, count(*) as n
from project
group by project_id
having max(n)
- 我期待它返回 {"headers": ["project_id", "n"], "values": [1,3]}。
2.错误:组功能使用无效
SELECT project_id, max(count(*)) as n
from project
group by project_id
如果有人能帮助我,真的很感激!!
解决方案
使用order by
和limit
:
select project_id, count(*) as n
from project
group by project_id
order by n desc
limit 1;
如果要处理关系,请使用窗口函数:
select p.*
from (select project_id, count(*) as n,
rank() over (order by count(*) desc) as seqnum
from project
group by project_id
) p
where seqnum = 1;
推荐阅读
- jenkins-pipeline - Jenkins 管道 - 获取 vSphere 虚拟机列表
- kubernetes - kubernetes pod 卡在等待中
- javascript - 在点击事件上将值设置为 APP_BASE_HREF
- bash - 从重定向到日志文件的程序输出中删除进度条
- android - 安卓手表是否可以直接(不带手机)连接服务器(带IP和端口)?
- mysql - Alteryx 工作流计划卡在队列中
- python - 如何处理“ NotADirectoryError: [Errno 20] Not a directory:”
- visual-studio - 在两个打开的编辑器之间切换
- python - 如何从 csv/tsv 加载 Pandas DataFrame 作为分解类别类型?
- javascript - 防止输入在内容可编辑的 div 中写入新行