sql - SELECT 列表不在 GROUP BY 错误中,但我得到了明确的结果
问题描述
这是我制作的代码。
SELECT
substr(to_char(birthday, 'YYYY'), 1, 3)
|| '0',
emp_type,
AVG(pay)
FROM
emp2
WHERE
substr(to_char(birthday, 'YYYY'), 1, 3) IN (
'196',
'197',
'198',
'199'
)
GROUP BY
substr(to_char(birthday, 'YYYY'), 1, 3),
emp_type;
代码很简单,只需按 1960 年代、1970 年代、1980 年代、1990 年代分组,然后使用AVG(PAY)
运行此代码时没有问题或警告,但 Oracle SQL Devloper 向我显示了这一点。
对不起我的语言。无论如何,警告说 SELECT 列表与 GROUP BY 不同。
我知道这是一件小事,但我认为我选择的那个肯定是在 GROUP BY 中。请告诉我我的想法是对还是错。这是此代码中使用的结果和数据表。
解决方案
您的分组依据需要包含您选择的列。在您的情况下,您选择了 2 列:
SELECT
substr(to_char(birthday, 'YYYY'), 1, 3) || '0',
emp_type,
...
但是您错过了 group by 子句中连接的“0”,因此您的 2 列与您的子句中的列group by
不同select
。
GROUP BY
substr(to_char(birthday, 'YYYY'), 1, 3),
emp_type;
尝试将其更改为
GROUP BY
substr(to_char(birthday, 'YYYY'), 1, 3) || '0',
emp_type;
推荐阅读
- sql - 动态构造的 SQL 中的 SQL 注入机会
- java - 字符串翻转不起作用,不明白为什么?导致越界异常
- r - Rtweets 身份验证问题
- javascript - 在网格 Ext js 中显示 json 响应
- java - 如何使用双精度数组制作 for 循环?
- c# - .Net Core 3.1 中的自定义 ActionFilterAttribute 返回:无法解析“System.String”类型的服务
- javascript - 如何使用 Chrome 扩展隐藏 Yammer 组上放错位置的帖子
- replace - Ansible 中有没有办法将基于 k:v 查找的字典值替换为另一个字典?
- kubernetes - 将 Secret 值/环境变量传递给 flexvol 选项
- json - 如果键与使用 jq 的同一数组中的另一个键匹配,则从 JSON 文件中删除条目