2015-08-16 81 views
1

对于架构epartments(department_id, department_name) employees(last_name, department_id, salary)
我想要显示的department_id, department_name, count(employees),avg(salary),last_name,salary
我曾尝试使用下面的查询如何显示部门(一次)以及在该部门工作的所有员工的列表?

SELECT d1.department_id,d1.department_name,d1."count",d1."avg",e.last_name,e.salary 
FROM employees e 
INNER JOIN (SELECT d.department_id,d.department_name,count(e.last_name) AS "count",round(avg(e.salary),2) AS "avg" 
       FROM employees e,departments d 
       WHERE e.department_id=d.department_id 
       GROUP BY d.department_id,d.department_name) d1 
    ON e.department_id=d1.department_id; 

虽然显示正确的输出它不是我想要的格式。 上面的查询给出的

90 Executive 3 19333.33 King 24000 
90 Executive 3 19333.33 Kochhar 17000 
90 Executive 3 19333.33 De Haan 17000 
60 IT   3 6400  Hunold 9000 
60 IT   3 6400  Ernst 6000 
60 IT   3 6400  Lorentz 4200 
50 Shipping 5 3500  Mourgos 5800 

输出,而应该像

90 Executive 3 19333.33 King 24000 
           Kochhar 17000 
           De Haan 17000 
60 IT   3 6400  Hunold 9000 
           Ernst 6000 
           Lorentz 4200 
50 Shipping 5 3500  Mourgos 5800 
+0

而不是在SQL中这样做,这样做表示层代码的格式 – HaveNoDisplayName

回答

0

如果你真的想显示类似'',而不是在查询这些数据,我想你可以使用ROW_NUMBER()为像这样:

CASE 
    WHEN (ROW_NUMBER() OVER (PARTITION BY d1.department_id 
          ORDER BY d1.department_id)) = 1 THEN 
     d1.department_id 
    ELSE 
     Null 
END 

为列:d1.department_idd1.department_named1."count"d1."avg"

+0

它工作谢谢 – edgar

相关问题