SQL薪资分组

时间:2018-07-31 04:21:53

标签: sql output

我有一个问题要问,我应该创建一个显示以下内容的查询:

  MIN(lastname)   MAX(firstname)   SUM(salary)    AVG(salary)
---------------------------------------------------------------
  DAVIES            TRINA           17500           3500

这是我创建的查询/查询:

 SQL> SELECT MIN(LASTNAME), MAX(FIRSTNAME), SUM(SALARY), AVG(SALARY)
 2  FROM EMPLOYEES
 3  GROUP BY JOB_ID;

 SQL> SELECT MIN(LASTNAME), MAX(FIRSTNAME), SUM(SALARY), AVG(SALARY)
 2  FROM EMPLOYEES
 3  GROUP BY JOB_ID, MANAGER_ID;

但是我看到了多行,在显示DAVIES TRINA的那部分中,SUM和AVG薪水不同,我不确定它们是如何分组的。

  MIN(LASTNAME) MAX(FIRSTNAME) SUM(SALARY) AVG(SALARY)
     ---------- ---------- ----------- -----------
      ERNST      DIANA            10200        5100
      HIGGINS    SHELLEY          12000       12000
      GIETZ      WILLIAM           8300        8300
      MOURGOS    KEVIN             5800        5800
      WHALEN     JENNIFER          4400        4400
      DE HAAN    NENA             34000       17000
      ZLOTKEY    ELENI            10500       10500
      HARTSTEIN  MICHAEL          13000       13000
      KING       STEVEN           24000       24000
      ABEL       KIMBERLEY        26600  8866.66667
      FAY        PAT               6000        6000
      **DAVIES     TRINA            11700        2925**

我在做什么错? 下面的更多信息:

EMPLOYEE_ID FIRSTNAME LASTNAME职位JOB_ID工资MANAGER_ID DEPARTMENT_ID


    100 STEVEN     KING       AD_PRES         24000                       90
    101 NENA       KOCHAR     AD_VP           17000        100            90
    102 LEX        DE HAAN    AD_VP           17000        100            90
    103 ALEXANDER  HUNOLD     IT_PROG                      101            60
    104 BRUCE      ERNST      IT_PROG          6000        102            60
    107 DIANA      LORENTZ    IT_PROG          4200        103            60
    124 KEVIN      MOURGOS    ST_MAN           5800        100            50
    141 TRINA      RAJS       ST_CLERK         3500        124            50
    142 CURTIS     DAVIES     ST_CLERK         3100        124            50
    143 RANDALL    MATOS      ST_CLERK         2600        124            50
    144 PETER      VARGAS     ST_CLERK         2500        124            50

EMPLOYEE_ID FIRSTNAME LASTNAME职位JOB_ID工资MANAGER_ID DEPARTMENT_ID


    149 ELENI      ZLOTKEY    SA_MAN          10500        100            80
    174 ELLEN      ABEL       SA_REP          11000        149            50
    176 JONATHAN   TAYLOR     SA_REP           8600        149            80
    178 KIMBERLEY  GRANT      SA_REP           7000        149
    200 JENNIFER   WHALEN     AD_ASST          4400        101            10
    201 MICHAEL    HARTSTEIN  MK_MAN          13000        100            20
    202 PAT        FAY        MK_REP           6000        201            20
    205 SHELLEY    HIGGINS    AC_MGR          12000        101           110
    206 WILLIAM    GIETZ      AC_ACCOUNT       8300        205           110

1 个答案:

答案 0 :(得分:1)

如果提供正确的数据(即在运行查询/查询之前的数据),并告知其为什么应为17500(总和)和3500(平均),那么您就有更多机会获得答案。

在第一个查询中,您基于JOB_ID进行分组。这意味着对于所有相似的JOB_ID(对于SUM(SALARY)),它将选择SALARY列的值,而SUM将为每个不同的JOB_ID选择值。

示例:

JOB_ID SALARY
   1    200
   2    300
   1    150
   2    100
   3    270

如果您运行以下查询:

Select JOB_ID,SUM(SALARY) FROM Table GROUP BY JOB_ID

输出:

JOB_ID SALARY
  1     350
  2     400
  3     270