【问题标题】:Group Function not working on Oracle组功能不适用于 Oracle
【发布时间】:2017-01-05 15:46:25
【问题描述】:

我在 Oracle SQL 上练习函数,现在我正在尝试编写一个组函数以按部门 id 在控制台 AVG 工资组上打印,并且我想从另一个表中添加列部门名称。我认为我的语法是正确的,但无论如何我收到了 Oracle 错误。

SELECT   e.department_id, d.department_name, e.AVG(salary)
FROM     employees e
JOIN     departments d
ON      (e.department_id = d.department_id)
GROUP BY department_id, department_name;

ORA-00918:列定义不明确 00918. 00000 - “列定义不明确” *原因:
*Action: Error en la línea: 5, columna: 10

【问题讨论】:

  • "我认为我的语法是正确的,但无论如何我收到了 Oracle 错误" - 如果您收到错误,那么您的语法不正确。
  • 哈哈好吧我知道了。

标签: sql oracle join group-by


【解决方案1】:

使用各自的别名限定所有列。此外,e. 不会应用于avg 函数,而是应用于列salary

SELECT   e.department_id, d.department_name, AVG(e.salary)
FROM     employees e
JOIN     departments d
ON      (e.department_id = d.department_id)
GROUP BY e.department_id, d.department_name;

【讨论】:

  • 我已尝试按照您的建议进行操作,但收到了一个新错误。
  • @GurV - 当您按d.department_id 分组时,选择e.department_id 将不起作用。你需要保持一致。
  • SELECT e.AVG(salary), d.department_id, d.department_name FROM employees e JOIN department d ON (e.department_id = d.department_id) GROUP BY d.department_id, d.department_name;
  • 使用AVG(e.salary) 而不是e.AVG(salary)。阅读我的答案。
  • 我已经尽了所有可能,我只是觉得不行,因为 Just not working group functions with join sentence。
猜你喜欢
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
  • 2015-11-27
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多