14

从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略。

http://www.nowcoder.com/questionTerminal/c59b452f420c47f48d9c86d69efdff20

题目:从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。
注意对于重复的emp_no进行忽略。
题意:每个title下,emp_no重复的员工忽略不计

方法1:GROUPBY+HAVING,子查询,先去重再计数
SELECT title, COUNT(*) t
FROM (SELECT DISTINCT emp_no,title FROM titles)
GROUP BY title
HAVING t>=2;
补充:当DISTINCT应用到多个字段时,其应用范围是其后面的所有字段,而不是紧挨它的一个字段
注意:DISTINCT只能放在所有字段前面,所以上面的DISTINCT emp_no和title不可以交换

方法2:Distinct,考虑去重的部分中计数
SELECT title, COUNT(DISTINCT emp_no) t
FROM titles
GROUP BY title
HAVING t>=2;

全部评论
select x.title,count(*) from (select distinct emp_no,title from titles) x group by x.title having count(*) >= 2 order by x.title 这个是可以的,好像要加个order by
1 回复 分享
发布于 2021-01-09 17:05
我自己写的就是第一个,但是实测通过不了,不知道啥原因。。。服了
点赞 回复 分享
发布于 2020-12-16 09:29
第一个答案mysql通过不了
点赞 回复 分享
发布于 2020-12-15 17:43
select title,count(*)t from (select distinct title,emp_no from titles)a group by title having t>=2 这个结果和第二个结果是一样的,为什么通过不了呢?
点赞 回复 分享
发布于 2020-12-15 15:21
select c.title ,count(c.title) as t from (select Distinct b.emp_no ,b.title from (select titles.title , titles.emp_no from titles where titles.to_date='9999-01-01') as b) as c group by c.title having t >=2 我觉得这道题要的应该是员工最新的职级吧。to_date='9999-01-01' 而且肯定只有10条有效数据。 怎么可能是这样distinct呢?
点赞 回复 分享
发布于 2020-10-22 18:44

相关推荐

嵌入式求职之路:可以看我经验😂,https://www.nowcoder.com/share/jump/73221730841876945
点赞 评论 收藏
分享
见见123:简历没有啥问题,是这个社会有问题。因为你刚毕业,没有工作经历,现在企业都不要没有工作经历的。社会病了。
点赞 评论 收藏
分享
评论
37
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务