count(*)到底能做什么?

时间:2019-03-31 13:25:53

标签: sql oracle

我使用oracle 11g。我想要最高和最低薪水,以及每个部门的员工人数,所以我要这样做:

 select d.department_id, d.department_name, max(salary), min(salary), count(*) 
 from employees e ,
      departments d 
where e.department_id = d.department_id 
group by d.department_id, d.department_name;

它有效:

DEPARTMENT_ID DEPARTMENT_NAME                MAX(SALARY) MIN(SALARY)   COUNT(*)
------------- ------------------------------ ----------- ----------- ----------
          100 Finance                              12008        6900          6
           50 Shipping                              8200        2100         45
           70 Public Relations                     10000       10000          1
           30 Purchasing                           11000        2500          6
           90 Executive                            24000       17000          3
           10 Administration                        4400        4400          1
          110 Accounting                           12008        8300          2
           40 Human Resources                       6500        6500          1
           20 Marketing                            13000        6000          2
           60 IT                                    9000        4200          5
           80 Sales                                14000        6100         34

11 rows selected.

那么count(*)是什么意思?算部门还是什么?

1 个答案:

答案 0 :(得分:0)

count(*)返回与where语句匹配的行。

在您的情况下为where e.department_id=d.department_id

由于您通过count(*)应用了一个组,因此将返回每个组(d.department_id)的行数。

这意味着您将获得每个部门(e.department_id)的雇员人数(d.department_id)。