Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用HR数据模型执行基本Oracle Sql命令任务_Sql_Oracle_Aggregate Functions - Fatal编程技术网

如何使用HR数据模型执行基本Oracle Sql命令任务

如何使用HR数据模型执行基本Oracle Sql命令任务,sql,oracle,aggregate-functions,Sql,Oracle,Aggregate Functions,链接到我需要用于此问题的数据模型。检查我的sql代码 (来源:) 我自己的任务是查找特定位置中每种工作类型的员工总数(即,用户应输入位置ID或城市) 还应包括职位、城市位置和国家名称 我正在尝试处理的代码。虽然我尝试了很多方法,但都出现了不同的错误,例如定义不明确的列、此处不允许使用group by、标识符无效。我正在使用oracle apex来完成所有工作 SELECT job_title, city,country_name,location_id, count(j.job_id) "nu

链接到我需要用于此问题的数据模型。检查我的sql代码


(来源:)

我自己的任务是查找特定位置中每种工作类型的员工总数(即,用户应输入位置ID或城市)

还应包括职位、城市位置和国家名称

我正在尝试处理的代码。虽然我尝试了很多方法,但都出现了不同的错误,例如定义不明确的列、此处不允许使用group by、标识符无效。我正在使用oracle apex来完成所有工作

SELECT job_title, city,country_name,location_id, count(j.job_id) "number of employees"
FROM hr.employees, hr.jobs, hr.locations, hr.countries, hr.departments
WHERE employees.job_id = jobs.job_id
AND Countries.country_id = Locations.country_id
AND Locations.location_id = departments.location_id
GROUP BY job_title, city, country_name, location_id;

你应该考虑使用二十一世纪版本。 因为它太远了,所以使用了
JOIN
命令 易于使用和故障排除

你也应该考虑所有的资格。 按表列出列名以消除歧义

试试这个:

 SELECT COUNT(DISTINCT e.employee_id) "number of employees",
        j.job_title,
        l.city,
        c.country_name,
        l.location_id
   FROM hr.employees e
   JOIN hr.departments d  ON e.department_id = d.department_id
   JOIN hr.locations l    ON d.location_id = l.location_id
   JOIN hr.countries c    ON l.country_id = c.country_id
   JOIN hr.jobs j         ON e.job_id = j.job_id
  GROUP BY j.job_title, l.city, c.country_name, l.location_id
注意
SELECT
子句中的
COUNT(不同的e.employee\u id)
项。这就够了 另一个程序员清楚地知道,您正在计算聚合查询中的员工数。你 可以将其替换为
COUNT(*)
并获得相同的精确结果

如果您希望报告员工的子集,可以在
分组依据
子句之前插入
WHERE
子句。例如,您可以这样做:

WHERE l.city = 'New York' AND c.country_name = 'US'
但当然,你需要知道数据中实际出现的城市名称和国家名称,才能正确理解这一点

您还可以将带有ROLLUP的
附加到
GROUP BY
子句的末尾。如果这样做,请使用此版本的
分组依据
更改字段的顺序

  GROUP BY ROLLUP(c.country_name, l.city, l.location_id, j.job_title)

哦,对不起,我应该在l.country\u id=c.country\u id上加上
。我编辑了我的答案。先生,你是一个传奇人物。向你走去。它起了惊人的作用。我希望有比谢谢更重要的事,这样我就可以对你说了。无论如何,请注意我的个人资料,因为我会发布更多的SQL问题,如果您能回答,我将不胜感激。再次非常感谢你