ora-00979: 不是 group by 表达式
时间: 2023-04-24 07:04:04 浏览: 70
这是一个Oracle数据库的错误信息,意思是在一个GROUP BY语句中,你使用了一个不是GROUP BY表达式的值。也就是说,你在GROUP BY子句中使用了一个不是查询列或聚合函数的值。要解决这个错误,请确保GROUP BY子句中的所有项都是查询列或聚合函数。
相关问题
ErrorMessage: ORA-00979: 不是 GROUP BY 表达式
这个错误提示是 Oracle 数据库的错误,意思是在执行 GROUP BY 语句时,SELECT 语句中的某些列没有被包含在 GROUP BY 子句中,或者在 SELECT 语句中使用了聚合函数但是没有包含在 GROUP BY 子句中。解决这个问题的方法是确保 SELECT 语句中的所有非聚合列都被包含在 GROUP BY 子句中,或者使用聚合函数来计算这些列的值。如果你需要更具体的解释或者帮助,请提供更多的上下文信息。
SELECT s.dept AS 部门, m.male_sal AS 男薪水, f.female_sal AS 女薪水, t.total_sal AS 合计薪水 FROM sett.t_staff_info s LEFT JOIN ( SELECT dept, SUM(sal) AS male_sal FROM sett.t_staff_info WHERE sex = '0' GROUP BY dept ) m ON s.dept =m.dept LEFT JOIN ( SELECT dept, SUM(sal) AS female_sal FROM sett.t_staff_info WHERE sex = '1' GROUP BY dept ) f ON s.dept = f.dept LEFT JOIN ( SELECT dept, SUM(sal) AS total_sal FROM sett.t_staff_info GROUP BY dept ) t ON s.dept = t.dept GROUP BY s.dept; 报错:ORA-00979:不是 GROUP BY表达式
根据你提供的SQL语句和报错信息,问题出在GROUP BY子句上。要解决这个问题,将所有的非聚合列都添加到GROUP BY子句中。修改后的SQL语句如下:
```sql
SELECT s.dept AS 部门,
m.male_sal AS 男薪水,
f.female_sal AS 女薪水,
t.total_sal AS 合计薪水
FROM sett.t_staff_info s
LEFT JOIN (
SELECT dept, SUM(sal) AS male_sal
FROM sett.t_staff_info
WHERE sex = '0'
GROUP BY dept
) m ON s.dept = m.dept
LEFT JOIN (
SELECT dept, SUM(sal) AS female_sal
FROM sett.t_staff_info
WHERE sex = '1'
GROUP BY dept
) f ON s.dept = f.dept
LEFT JOIN (
SELECT dept, SUM(sal) AS total_sal
FROM sett.t_staff_info
GROUP BY dept
) t ON s.dept = t.dept
GROUP BY s.dept, m.male_sal, f.female_sal, t.total_sal;
```
这样,所有的非聚合列都被添加到了GROUP BY子句中,应该能够解决ORA-00979错误。请尝试使用修改后的SQL语句。