Oracle 有人能解释一下这两者的区别吗?

Oracle 有人能解释一下这两者的区别吗?,oracle,oracle-sqldeveloper,Oracle,Oracle Sqldeveloper,我是一名学生,这是我学习Oracle SQL的第一年。在考试中,我使用了以下代码: SELECT department_id,MAX(salary) FROM employees GROUP BY department_id HAVING INSTR(TO_CHAR(department_id),'5')!=1 AND MAX(salary)<1000; 选择部门id,最大值(薪资) 来自员工 按部门分组\u id 有仪表(至部门id)‘5’=1和MAX(salary)Where子句处理

我是一名学生,这是我学习Oracle SQL的第一年。在考试中,我使用了以下代码:

SELECT department_id,MAX(salary)
FROM employees
GROUP BY department_id
HAVING INSTR(TO_CHAR(department_id),'5')!=1 AND MAX(salary)<1000;
选择部门id,最大值(薪资)
来自员工
按部门分组\u id

有仪表(至部门id)‘5’=1和MAX(salary)Where子句处理行的原始内容 因此,您要过滤为select子句计算的数据集

 WHERE SUBSTR(TO_CHAR(DEPARTMENT_ID),1,1)<>'5'
因此,这些行不用于

SELECT DEPARTMENT_ID, MAX(SALARY) ..GROUP BY DEPARTMENT_ID
在处理所选结果的结果时,还应处理SUBSTR(TO_CHAR(DEPARTMENT_ID),1,1)=“5”的行


在您的情况下,列DEPARTMENT_ID的每个值总是被选中的,因为在group by中提到了,然后两个查询都应该返回相同的结果

通常,您应该只使用聚合函数,因为这可能会导致问题?请检查两个查询的解释计划以了解这就是我想要听到的。谢谢
SUBSTR(TO_CHAR(DEPARTMENT_ID),1,1)='5' 
SELECT DEPARTMENT_ID, MAX(SALARY) ..GROUP BY DEPARTMENT_ID