mysql_2

对下面表格进行各种查询操作(创建过程不显示了)

1.显示所有职工的基本信息。

mysql> select * from `worker`;
+-----------+-----------+--------------+---------+--------------+--------+--------------+
| 部门号    | 职工号    | 工作时间     | 工资    | 政治面貌     | 姓名   | 出生日期     |
+-----------+-----------+--------------+---------+--------------+--------+--------------+
|       101 |      1001 | 2015-05-04   | 3500.00 | 群众         | 张三   | 1970-07-01   |
|       101 |      1002 | 2017-02-06   | 3200.00 | 团员         | 李四   | 1997-02-08   |
|       102 |      1003 | 2011-01-04   | 8500.00 | 党员         | 王亮   | 1983-06-08   |
|       102 |      1004 | 2016-10-10   | 5500.00 | 群众         | 赵六   | 1994-09-05   |
|       102 |      1005 | 2014-04-01   | 4800.00 | 党员         | 钱七   | 1992-12-30   |
|       102 |      1006 | 2017-05-05   | 4500.00 | 党员         | 孙八   | 1996-09-02   |
+-----------+-----------+--------------+---------+--------------+--------+--------------+
 

2.查询所有职工所属部门的部门号,不显示重复的部门号。

mysql> select distinct 部门号 from `worker`;
+-----------+
| 部门号    |
+-----------+
|       101 |
|       102 |
+-----------+
 

3.求出所有职工的人数。

mysql> select count(*) as 人数 from `worker`;
+--------+
| 人数   |
+--------+
|      6 |
+--------+
 

4.列出最高工资和最低工资。

mysql> select max(工资) as 最高工资, min(工资) as 最低工资 from `worker`;
+--------------+--------------+
| 最高工资     | 最低工资     |
+--------------+--------------+
|      8500.00 |      3200.00 |
+--------------+--------------+
 

5.列出职工的平均工资和总工资。

mysql> select avg(工资) as 平均工资, sum(工资) as 总工资 from `worker`;
+--------------+-----------+
| 平均工资     | 总工资    |
+--------------+-----------+
|  5000.000000 |  30000.00 |
+--------------+-----------+
 

6.创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。

mysql> create table 工作日期表 select 职工号, 姓名, 工作时间 from `worker`;
Query OK, 6 rows affected (0.03 sec)
Records: 6  Duplicates: 0  Warnings: 0

mysql> select * from 工作日期表;
+-----------+--------+--------------+
| 职工号    | 姓名   | 工作时间     |
+-----------+--------+--------------+
|      1001 | 张三   | 2015-05-04   |
|      1002 | 李四   | 2017-02-06   |
|      1003 | 王亮   | 2011-01-04   |
|      1004 | 赵六   | 2016-10-10   |
|      1005 | 钱七   | 2014-04-01   |
|      1006 | 孙八   | 2017-05-05   |
+-----------+--------+--------------+

7.显示所有职工的年龄。

mysql> select 姓名, year(now()) - year(出生日期) + 1 as 年龄 from `worker`;
+--------+--------+
| 姓名   | 年龄   |
+--------+--------+
| 张三   |     54 |
| 李四   |     27 |
| 王亮   |     41 |
| 赵六   |     30 |
| 钱七   |     32 |
| 孙八   |     28 |
+--------+--------+
 

8.列出张姓的职工号、姓名和出生日期。

mysql> select 职工号, 姓名, 出生日期  from `worker` where 姓名 like '张%';
+-----------+--------+--------------+
| 职工号    | 姓名   | 出生日期     |
+-----------+--------+--------------+
|      1001 | 张三   | 1970-07-01   |
+-----------+--------+--------------+
 

9.列出1980年以前出生的职工的姓名、参加工作时间。

mysql> select 姓名, 工作时间  from `worker` where year(出生日期) < 1980;
+--------+--------------+
| 姓名   | 工作时间     |
+--------+--------------+
| 张三   | 2015-05-04   |
+--------+--------------+
 

10.列出工资在3000-5000之间的所有职工姓名。

mysql> select 姓名 from `worker` where 工资 > 3000 and 工资 < 5000;
+--------+
| 姓名   |
+--------+
| 张三   |
| 李四   |
| 钱七   |
| 孙八   |
+--------+
 

11.列出所有赵姓和钱姓的职工姓名。

mysql> select 姓名 from `worker` where 姓名 like '钱%' or 姓名 like '赵%';
+--------+
| 姓名   |
+--------+
| 赵六   |
| 钱七   |
+--------+
 

12.列出所有部门号为102的职工号、姓名、党员否。

mysql> select 职工号, 姓名, if(政治面貌 = '党员', '是', '否') as 党员否 from `worker` where 部门号 = 102;
+-----------+--------+-----------+
| 职工号    | 姓名   | 党员否    |
+-----------+--------+-----------+
|      1003 | 王亮   | 是        |
|      1004 | 赵六   | 否        |
|      1005 | 钱七   | 是        |
|      1006 | 孙八   | 是        |
+-----------+--------+-----------+
 

13.将职工表worker中的职工按出生的先后顺序排序。

mysql> select * from `worker` order by 出生日期;
+-----------+-----------+--------------+---------+--------------+--------+--------------+
| 部门号    | 职工号    | 工作时间     | 工资    | 政治面貌     | 姓名   | 出生日期     |
+-----------+-----------+--------------+---------+--------------+--------+--------------+
|       101 |      1001 | 2015-05-04   | 3500.00 | 群众         | 张三   | 1970-07-01   |
|       102 |      1003 | 2011-01-04   | 8500.00 | 党员         | 王亮   | 1983-06-08   |
|       102 |      1005 | 2014-04-01   | 4800.00 | 党员         | 钱七   | 1992-12-30   |
|       102 |      1004 | 2016-10-10   | 5500.00 | 群众         | 赵六   | 1994-09-05   |
|       102 |      1006 | 2017-05-05   | 4500.00 | 党员         | 孙八   | 1996-09-02   |
|       101 |      1002 | 2017-02-06   | 3200.00 | 团员         | 李四   | 1997-02-08   |
+-----------+-----------+--------------+---------+--------------+--------+--------------+
 

14.显示工资最高的前三名职工的职工号和姓名。

mysql> select * from `worker` order by 工资 desc limit 0, 3;
+-----------+-----------+--------------+---------+--------------+--------+--------------+
| 部门号    | 职工号    | 工作时间     | 工资    | 政治面貌     | 姓名   | 出生日期     |
+-----------+-----------+--------------+---------+--------------+--------+--------------+
|       102 |      1003 | 2011-01-04   | 8500.00 | 党员         | 王亮   | 1983-06-08   |
|       102 |      1004 | 2016-10-10   | 5500.00 | 群众         | 赵六   | 1994-09-05   |
|       102 |      1005 | 2014-04-01   | 4800.00 | 党员         | 钱七   | 1992-12-30   |
+-----------+-----------+--------------+---------+--------------+--------+--------------+
 

15.求各部门党员的人数

mysql> select 部门号, count(政治面貌) as 党员人数 from `worker` where 政治面貌 = '党员' group by 部门号;
+-----------+--------------+
| 部门号    | 党员人数     |
+-----------+--------------+
|       102 |            3 |
+-----------+--------------+
 

16.统计各部门的工资和平均工资。

mysql> select 部门号, sum(工资) as 各部门总工资, avg(工资) as 各部门平均工资 from `worker` group by 部门号;
+-----------+--------------------+-----------------------+
| 部门号    | 各部门总工资       | 各部门平均工资        |
+-----------+--------------------+-----------------------+
|       101 |            6700.00 |           3350.000000 |
|       102 |           23300.00 |           5825.000000 |
+-----------+--------------------+-----------------------+

17.列出总人数大于3的部门号和总人数。

mysql> select 部门号, count(*) as 总人数 from `worker` group by 部门号 having count(*) > 3;
+-----------+-----------+
| 部门号    | 总人数    |
+-----------+-----------+
|       102 |         4 |
+-----------+-----------+
 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值