sql - oracle 11g 上出现 ORA-00979 的原因是什么
问题描述
试图了解GROUP BY
SQL中的使用
我已经多次遇到这个错误,我可能无法识别核心以便在以后解决它
SELECT d.department_name
FROM departments d
JOIN employees e
ON (d.department_id = e.department_id)
GROUP BY d.department_name
HAVING (SELECT COUNT(*) FROM employees) > 5
AND e.commission_pct IS NOT NULL;
ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
*Cause:
*Action:
Error at Line: 7 Column: 5
解决方案
应该有按它分组的列是它的构建方式。因此,您可以聚合或操作 group by 的列。您得到 group by 错误的原因是您使用了子查询而不是 group by 或聚合的列。
简而言之,have 与 where 类似,但只是让您可以过滤组的记录,而不像 where 用于过滤整个表本身的记录
SELECT d.department_name
FROM departments d
JOIN employees e
ON (d.department_id =
e.department_id)
Where
e.commission_pct IS NOT NULL
GROUP BY d.department_name
HAVING COUNT(*) > 5
;
推荐阅读
- javascript - 将 javascript 变量发送到 django 视图
- c++ - 制作一个 QPushButton 圆形 C++
- ios - 如何初始化所有视图控制器?
- python - TypeError:标签不是 numpy 数组,也不是标量
- angular - 重定向到路由后,它立即转到上一页
- xmpp - 无法使用 IP 地址访问 ejabberd 管理面板
- javascript - 从 dist 加载 index.html 中的资源失败,这与工作 npm run dev cmd 相反
- ruby - The recipient does not receive any push message even though
- thymeleaf - How to stop character encoding in thymeleaf from changing url get parameter '?' character to changing to %3F
- ios - 如何在 Swift 中按日期对数组进行分组?