我应该创建一个查询,以显示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;
我在做什么错?谢谢
答案 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