有表yg(员工),表bm(部门)两个表,其结构与内容如下:
mysql> desc yg;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| fid | bigint(20) | YES | | NULL | |
| sal | float | YES | | NULL | |
| depNo | int(11) | YES | MUL | NULL | |
+-------+--------------+------+-----+---------+----------------+
5 rows in set
mysql> select * from yg;
+----+----------+------+-----+-------+
| id | name | fid | sal | depNo |
+----+----------+------+-----+-------+
| 1 | zhangsan | NULL | 100 | 1 |
| 2 | lisi | 1 | 12 | 1 |
| 3 | wangwu | 1 | 13 | 2 |
| 4 | zhaoliu | 3 | 90 | 3 |
| 5 | weihu | 3 | 23 | 3 |
| 6 | maba | 1 | 33 | 4 |
| 7 | haizi | 4 | 80 | 1 |
+----+----------+------+-----+-------+
7 rows in set
mysql> desc bm;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| depNo | int(11) | YES | MUL | NULL | |
| name | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
3 rows in set
mysql> select * from bm;
+----+-------+------------+
| id | depNo | name |
+----+-------+------------+
| 1 | 1 | 网银事业部 |
| 2 | 2 | 公共事业部 |
| 3 | 3 | 财务部 |
| 4 | 4 | 销售部 |
+----+-------+------------+
4 rows in set
请你写出以下条件的sql: 1.请你列出每个员工的id,name,fname(注:员工直接上司,表yg是个自关联关系的表),sal。 2.请你统计每个部门所有员工的工资总和。
结果如下: 1题答案:
mysql> select a.id,a.name,b.name as fname from yg a,yg b where a.fid=b.id; +----+---------+----------+
| id | name | fname |
+----+---------+----------+
| 2 | lisi | zhangsan |
| 3 | wangwu | zhangsan |
| 4 | zhaoliu | wangwu |
| 5 | weihu | wangwu |
| 6 | maba | zhangsan |
| 7 | haizi | zhaoliu |
+----+---------+----------+
6 rows in set
2题答案:
mysql> select b.name as '部门名称',sum(a.sal) as '部门员工工资总和' from yg a,bm b where a.depNo=b.depNo group by a.depNo; +------------+------------------+
| 部门名称 | 部门员工工资总和 |
+------------+------------------+
| 网银事业部 | 192 |
| 公共事业部 | 13 |
| 财务部 | 113 |
| 销售部 | 33 |
+------------+------------------+
4 rows in set
|