我应该创建一个查询,该查询显示job_id、no of job_id、sum(工资)和ave(工资)
可能的结果:
JOB_ID NO. OF JOB_ID SUM(SALARY) AVE(SALARY)
-------------------------------------------------------
IT_PROG 3 10200 5100
AC_MGR 1 12000 12000
.
.
.
12 rows selected.我的输入在下面,但我无法得到上面所说的输出。我需要根据他们的工作身份将他们的工资分组,但我不能输入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;我做错了什么?谢谢
发布于 2018-07-30 13:11:18
我相信这是输出所需的代码:
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和工资--也就是薪资--也就是相同的薪资)。
此外,不需要最大值来计算该job_id出现的次数。
我希望我有所帮助:)
发布于 2018-07-30 13:12:06
你有不止一个错误。几乎没有任何数据库支持嵌套聚合函数。第二,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。
发布于 2018-07-30 13:27:35
您也将结果与薪资字段分组,该字段也将在计算中使用。你只需要把能量场从大猩猩身上移开,它就会像魔法一样工作。
选择JOB_ID,计数(*)为“JOB_ID的编号”,SUM(工资)为“SUM(工资)”,AVG(薪资)为“AVG(薪资)”,从JOB_ID的员工组中选择
https://stackoverflow.com/questions/51594525
复制相似问题