SQL基础练习02

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;

猜你喜欢

转载自www.cnblogs.com/youngao/p/9812417.html
今日推荐