SQL实验练习

时间:2018-07-30 12:59:11

标签: sql command-line

我应该创建一个查询,以显示job_id,job_id,sum(salary)和ave(salary)的编号

可能的结果:

JOB_ID    NO. OF JOB_ID    SUM(SALARY)    AVE(SALARY)
-------------------------------------------------------
IT_PROG         3             10200          5100
AC_MGR          1             12000          12000
. 
.
. 
12 rows selected.

我的输入低于下面,但我无法获得上述输出。 我需要根据他们的工作ID对他们的工资进行分组,但是我不能输入job_id,因为它不是按功能分组的

 SQL > SELECT JOB_ID, COUNT(MAX(JOB_ID)) AS "NO. OF JOB_ID", SUM(SALARY), AVG(SALARY)
 2  FROM EMPLOYEES
 3  GROUP BY JOB_ID, SALARY;

我在做什么错?谢谢

3 个答案:

答案 0 :(得分:1)

我相信这是您输出所需要的代码:

SELECT job_id, COUNT(job_id) AS "NO. OF JOB_ID", SUM(salary), AVG(salary)
FROM employees
GROUP BY job_id;

问题在于您不仅要按job_id分组,而且要按薪水分组,这使您无法获得该job_id的薪金总和和平均工资(它没有得到该job_id的平均值,而是该job_id的平均值,并且那薪水又是相同的薪水)。

除此之外,不需要MAX来计算该job_id的出现次数。

希望我能帮助:)

答案 1 :(得分:1)

您有多个错误。几乎没有数据库支持嵌套聚合功能。其次,您在SALARY中有GROUP BY。这没有任何意义,因为您希望在SALARY上进行计算。

因此,查询大概是这样的:

SELECT JOB_ID, COUNT(*) AS "NO. OF JOB_ID", SUM(SALARY), AVG(SALARY)
FROM EMPLOYEES e
GROUP BY JOB_ID;

如果您希望结果按特定顺序(例如按COUNT(*)排列,则应包括一个明确的ORDER BY

答案 2 :(得分:0)

您也将结果与薪金字段分组,该字段也在计算中使用。您只需要从树桩上移开字段,它将像一种魅力一样工作。

  

选择JOB_ID,COUNT(*)AS为“ NO。OF JOB_ID”,SUM(SALARY)为   员工集团的“ SUM(SALARY)”,AVG(SALARY)为“ AVG(SALARY)”   JOB_ID