0 数据表创建
1 CREATE TABLE `titles` ( 2 `emp_no` INT(11) NOT NULL, 3 `title` VARCHAR(50) NOT NULL, 4 `from_date` DATE NOT NULL, 5 `to_date` DATE NOT NULL); 6 INSERT INTO titles VALUES(10001,'Senior Engineer','1986-06-26','9999-01-01'); 7 INSERT INTO titles VALUES(10002,'Staff','1996-08-03','9999-01-01'); 8 INSERT INTO titles VALUES(10003,'Senior Engineer','1995-12-03','9999-01-01'); 9 INSERT INTO titles VALUES(10004,'Engineer','1986-12-01','1995-12-01'); 10 INSERT INTO titles VALUES(10004,'Senior Engineer','1995-12-01','9999-01-01'); 11 INSERT INTO titles VALUES(10005,'Senior Staff','1996-09-12','9999-01-01'); 12 INSERT INTO titles VALUES(10005,'Staff','1989-09-12','1996-09-12'); 13 INSERT INTO titles VALUES(10006,'Senior Engineer','1990-08-05','9999-01-01'); 14 INSERT INTO titles VALUES(10007,'Senior Staff','1996-02-11','9999-01-01'); 15 INSERT INTO titles VALUES(10007,'Staff','1989-02-10','1996-02-11'); 16 INSERT INTO titles VALUES(10008,'Assistant Engineer','1998-03-11','2000-07-31'); 17 INSERT INTO titles VALUES(10009,'Assistant Engineer','1985-02-18','1990-02-18'); 18 INSERT INTO titles VALUES(10009,'Engineer','1990-02-18','1995-02-18'); 19 INSERT INTO titles VALUES(10009,'Senior Engineer','1995-02-18','9999-01-01'); 20 INSERT INTO titles VALUES(10010,'Engineer','1996-11-24','9999-01-01'); 21 INSERT INTO titles VALUES(10010,'Engineer','1996-11-24','9999-01-01');
1、 从titles表中获取title并按照title分组
题目描述
从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。
无
输出描述:
1 /* 2 此题应注意以下三点: 3 1、用COUNT()函数和GROUP BY语句可以统计同一title值的记录条数 4 2、根据题意,输出每个title的个数为t,故用AS语句将COUNT(title)的值转换为t 5 3、由于WHERE后不可跟COUNT()函数,故用HAVING语句来限定t>=2的条件 6 */ 7 8 SELECT title, COUNT(title) AS t FROM titles 9 GROUP BY title HAVING t >= 2
2、从titles表中获取title并按照title分组,重复的emp_no忽略
题目描述
从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。
无
输出描述:
1 /* 2 此题应注意以下三点: 3 1、先用GROUP BY title将表格以title分组,再用COUNT(DISTINCT emp_no)可以统计同一title值且不包含重复emp_no值的记录条数 4 2、根据题意,输出每个title的个数为t,故用AS语句将COUNT(DISTINCT emp_no)的值转换为t 5 3、由于WHERE后不可跟COUNT()函数,故用HAVING语句来限定t>=2的条件 6 */ 7 8 SELECT title, COUNT(DISTINCT emp_no) AS t FROM titles 9 GROUP BY title HAVING t >= 2
3 查找employees表
题目描述
查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列
输入描述:
无
输出描述:
注:此题数据仍是基础练习01的employees表
1 /* 2 三点需要注意: 3 1、员工号为奇数,则emp_no取余应为1 4 2、last_name不为Mary,用‘!=’表示也可以用<>表示 5 3.根据hire_date逆序排列,用desc 6 */ 7 8 SELECT * FROM employees 9 WHERE emp_no%2 =1 10 AND last_name <> 'Mary' 11 ORDER BY hire_date DESC;