表结构如下:
1、显示所有职工的基本信息。
select * from worker ;
2、查询所有职工所属部门的部门号,不显示重复的部门号。
select distinct `部门号`from worker;
3、求出所有职工的人数。
select count(*) as '人数' from worker;
4、列出最高工和最低工资。
法一
select `工资` as `最低工资` from worker order by `工资` limit 0,1 ;
select `工资`as ` 最高工资` from worker order by `工资` desc limit 0,1;
select 工资
as 最低工资
from worker order by 工资
limit 0,1 union
select 工资
as 最高工资
from worker order by 工资
desc limit 0,1;
法二:
select min(`工资`) as 最低工资, max(`工资`) as 最高工资 from worker;
5、列出职工的平均工资和总工资。
select avg(`工资`) as 平均工资, sum(`工资`) as 总工资 from worker;
6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。
CREATE TABLE `workedate` (
`职工号` int(11) NOT NULL,
`工作时间` date NOT NULL,
`姓名` varchar(20) NOT NULL,
PRIMARY KEY (`职工号`)
) select 职工号,姓名,工作时间 from worker;
7、显示所有职工的年龄。
select datediff(curdate(),`出生日期`)/365 as 年龄 from worker;
8、列出所有姓孙的职工的职工号、姓名和出生日期。
select 职工号,姓名,出生日期 from worker where 姓名 like '孙%';
9、列出1990年以前出生的职工的姓名、参加工作日期。
法一
select 姓名,工作时间 from worker where year(出生日期)<1990;
10、列出工资在3000-5000之间的所有职工姓名。
select 姓名 from worker where 工资 between 3000 and 5000;
11、列出所有陈姓和李姓的职工姓名。
select 姓名 from worker where 姓名 regexp '^(李|张)';
使用正则匹配以李或张开头的项
12、列出所有部门号为102和103的职工号、姓名、党员否。
select 职工号,姓名,政治面貌 from worker where 部门号 in (102,103);
13、将职工表worker中的职工按出生的先后顺序排序。
select * from worker order by `出生日期`;
14、显示工资最高的前3名职工的职工号和姓名。
select `职工号` ,`姓名` from worker order by `工资` desc limit 0,3;
15、求出各部门党员的人数。
select 部门号,count(*) as 人数 from worker where `政治面貌`='党员' group by `部门号`;
16、统计各部门的工资和平均工资
select `部门号` ,avg(`工资`) as 平均工资, sum(`工资`) as 总工资 from worker group by `部门号`;
17、列出总人数大于4的部门号和总人数。
select count(*) as `人数` ,`部门号` from worker group by `部门号` having `人数` >= 4;
标签:语句,职工,工资,worker,查询,部门,姓名,sql,select
From: https://www.cnblogs.com/fr09/p/18196461