牛客网数据库SQL实战14—— 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略。
题目描述
从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。
注意对于重复的emp_no进行忽略。
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);
输入描述:
无
输出描述:
我的解答
select title,count(*) as tfrom(select title,emp_no,count(*)from titlesgroup by title,emp_no)group by titlehaving count(*) >= 2
题目没有说清楚,想表达的意思是每个title下,emp_no重复的员工忽略不计。
先通过子查询,去除重复emp_no,再用上题一样的方法求值
我觉得最好的答案
此题应注意以下三点:
先用GROUP BY title将表格以title分组,再用COUNT(DISTINCT emp_no)可以统计同一title值且不包含重复emp_no值的记录条数根据题意,输出每个title的个数为t,故用AS语句将COUNT(DISTINCT emp_no)的值转换为t由于WHERE后不可跟COUNT()函数,故用HAVING语句来限定t>=2的条件
SELECT title, COUNT(DISTINCT emp_no) AS t FROM titlesGROUP BY title HAVING t >= 2