与我给定的表相关的SQL查询

时间:2017-02-21 10:52:35

标签: mysql

emp table

+-----+-------+-----+---------+  
| eno | ename | dno | salary  |            
+-----+-------+-----+---------+
| 101 | sam   |   1 | 1200.00 |
| 102 | ram   |   1 | 1300.00 |
| 103 | alia  |   1 | 2500.00 |
| 104 | tina  |   2 | 1300.00 |
| 105 | avni  |   2 | 1800.00 |
| 106 | suraj |   2 | 2000.00 |
| 107 | chris |   3 | 1500.00 |
| 108 | ben   |   3 | 2000.00 |
| 109 | rina  |  3  | 3300.00 |
+-----+-------+-----+---------+

Dept table
+-----+-------+-----------+
| dno | dname | location  |          
+-----+-------+-----------+                     
|   1 | csc   | new delhi |                                
|   2 | phy   | mumbai    |
|   3 | chem  | hyderabad |
+-----+-------+-----------+

我想写一个查询 显示部门号码,部门名称,所有部门的平均工资

这里dno是emp表中的foriegn键 Dno是dept表中的主键

我尝试了很多次,但有时会出现错误,有时输出错误 我的愿望输出是

+-----+-------+-------------+
| dno | dname | avg(salary) |
+-----+-------+-------------+
|   1 | csc   | 1666.6666   |
|   2 | phy   | 1700.0000   |
|   3 | chem  |  2266.6666  |
+-----+-------+-------------+

2 个答案:

答案 0 :(得分:0)

这是经典的“分组依据”用法。 试试这个:

select d.dno , d.dname, avg(salary) 
from employee e LEFT JOIN department d on e.dno=d.dno 
GROUP BY e.dno 

答案 1 :(得分:0)

以下是您的查询:

SELECT e.dno DNO, d.dname DNAME, AVG(e.salary) SALARY
FROM emp e, dept d
WHERE e.dno = d.dno
GROUP BY DNO