学习了mysql 查询实战-变量方式-解答-CSDN博客,接着练习sql,从实战中多练习。
1,题目:
1,查询部门工资最高的员工
1,建表:
DROP TABLE IF EXISTS department;
create table department(
dept_id int not null auto_increment,
name varchar(10),
primary key(dept_id)
);
DROP TABLE IF EXISTS employee;
create table employee(
id int not null auto_increment,
name varchar(10),
salary decimal(10,2),
dept_id int default 0,
manager_id int default 1,
primary key(id)
);
2,插入数据:
insert into department values
(1, 'IT部'),
(2, '财务部'),
(3, '销售部');
INSERT INTO employee VALUES
(1,'jack', 7000, 1, 1),
(2, 'tom', 8000, 1, 1),
(3, 'joe', 8000, 1, 1),
(4, 'dell', 9000, 2, 2),
(5, 'ken', 10000, 2, 2),
(6, 'tim', 6000, 3, 3),
(7, 'steven', 7000, 3, 3),
(8, 'tank', 9000, 1, 3),
(9, 'tolly', 10000, 1, 3),
(10, 'jony', 12000, 1, 4);
2,部门工资前三高的员工
要求:找出各部门工资是前三高的员工
3,删除重复的电子邮箱
要求:删除重复的电子邮箱,相同的保留id最小的那条
1,建表:
CREATE TABLE IF NOT EXISTS user(
id INT UNSIGNED AUTO_INCREMENT,
email VARCHAR(200) NOT NULL,
PRIMARY KEY(id)
);
2,插入数据:
INSERT INTO USER VALUES
(1, 'xiaowang@edu.com'),
(2, 'xiaoli@edu.com'),
(3, 'xiaowang@edu.com'),
(4, 'xiaohui@edu.com'),
(5, 'xiaoli@edu.com'),
(6, 'xiaoli@edu.com');
4、统计各专业学⽣⼈数
要求:查询课程名,以及学习人数,按照学习人数降序排序;若学习人数相同的时候,按照课程名升序排序;若课程无人学习,显示0
1,建表
create table lesson(
id int not null auto_increment,
name varchar(30),
primary key(id)
);
create table learning(
student_id int not null default 0,
lesson_id int not null default 0
);
2,插入数据
insert into lesson values
(1, 'C++'),
(2, 'java'),
(3, 'python'),
(4, 'php'),
(5, 'mysql'),
(6, 'vue');
insert into learning values
(1, 1),
(2, 1),
(3, 1),
(4, 1),
(5, 2),
(6, 2),
(7, 2),
(8, 2),
(0, 3),
(19, 4),
(11, 40),
(12, 5),
(13, 5);
5、查找⾄少有三名直接下属的经理
总结:
先看要求,然后看数据的特点,再思考如何去处理数据,达成目的。
上一篇: 《mysql 查询实战-变量方式》
下一篇: 《mysql 查询实战1-解答》