首页 > 试题广场 >

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

[编程题]从titles表获取按照title进行分组,注意对于重复的e
  • 热度指数:146517 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。
注意对于重复的emp_no进行忽略(即emp_no重复的title不计算,title对应的数目t不增加)。
CREATE TABLE IF NOT EXISTS `titles` (
`emp_no` int(11) NOT NULL,
`title` varchar(50) NOT NULL,
`from_date` date NOT NULL,
`to_date` date DEFAULT NULL);
如插入:
INSERT INTO titles VALUES(10001,'Senior Engineer','1986-06-26','9999-01-01');
INSERT INTO titles VALUES(10002,'Staff','1996-08-03','9999-01-01');
INSERT INTO titles VALUES(10003,'Senior Engineer','1995-12-03','9999-01-01');
INSERT INTO titles VALUES(10004,'Engineer','1986-12-01','1995-12-01');
INSERT INTO titles VALUES(10004,'Senior Engineer','1995-12-01','9999-01-01');
INSERT INTO titles VALUES(10005,'Senior Staff','1996-09-12','9999-01-01');
INSERT INTO titles VALUES(10005,'Staff','1989-09-12','1996-09-12');
INSERT INTO titles VALUES(10006,'Senior Engineer','1990-08-05','9999-01-01');
INSERT INTO titles VALUES(10007,'Senior Staff','1996-02-11','9999-01-01');
INSERT INTO titles VALUES(10007,'Staff','1989-02-10','1996-02-11');
INSERT INTO titles VALUES(10008,'Assistant Engineer','1998-03-11','2000-07-31');
INSERT INTO titles VALUES(10009,'Assistant Engineer','1985-02-18','1990-02-18');
INSERT INTO titles VALUES(10009,'Engineer','1990-02-18','1995-02-18');
INSERT INTO titles VALUES(10009,'Senior Engineer','1995-02-18','9999-01-01');
INSERT INTO titles VALUES(10010,'Engineer','1996-11-24','9999-01-01');
INSERT INTO titles VALUES(10010,'Engineer','1996-11-24','9999-01-01');


输入描述:


输出描述:
title t
Assistant Engineer 2
Engineer 3
省略 省略
Staff 3
示例1

输入

输出

头像 N刻后告诉你
发表于 2020-05-19 20:32:11
题目:从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。注意对于重复的emp_no进行忽略。题意:每个title下,emp_no重复的员工忽略不计 方法1:GROUPBY+HAVING,子查询,先去重再计数SELECT title, COUNT(*) t 展开全文
头像 牛客748007191号
发表于 2020-04-22 16:07:49
只需在count中加入distinct '指定列'就可以在计算行数时去掉指定列中重复的值例子:select title,count(distinct emp_no) tfrom titlesgroup by title having count(*)>=2在count函数计数时去掉重复的emp 展开全文
头像 一男子因敲代码手指生茧
发表于 2020-11-25 21:13:46
这道题主要是让我对group by这个分组概念有了更深的体会。上一道题是根据title分组,我写的是:select t.title,count(t.title) as t from titles t group by t>=2;其实当时还是半知半解,因为使用count(t.emp_no)依然能 展开全文
头像 高质量搬砖人
发表于 2021-01-29 15:09:42
方法)使用DISTINCT去重 从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t,注意对于重复的emp_no进行忽略 SELECT title, COUNT(DISTINCT emp_no) AS& 展开全文
头像 无敌大花彪
发表于 2020-07-10 20:29:51
select title , count() tfrom (select distinct emp_no , title from titles)group by titlehaving t>= 2;/ distinct不要写错了更简单些select title , count(distin 展开全文
头像 超超i7宝
发表于 2020-11-17 15:36:08
SELECT DISTINCT title, COUNT(DISTINCT emp_no) tFROM titlesGROUP BY titleHAVING t >= 2
头像 mg0603
发表于 2021-01-07 09:46:17
题目:1.按照title进行分组2.每组个数大于等于23.列出title,及对应的数目t。注意:4.忽略重复的emp_no解题要点:1.基本思路与13题类似,需要注意的都是,使用group by之后要用having语句来表示条件。2.额外要点:忽略重复的emp_no,所以在计数时,用count(di 展开全文