Sql 聚合函数(MAX等)返回NULL而不是无行
如何生成聚合函数?例如,当没有行与给定条件匹配时,MAX返回no rows而不是NULL 例如,以下查询返回一行:Sql 聚合函数(MAX等)返回NULL而不是无行,sql,oracle,group-by,aggregate-functions,Sql,Oracle,Group By,Aggregate Functions,如何生成聚合函数?例如,当没有行与给定条件匹配时,MAX返回no rows而不是NULL 例如,以下查询返回一行: SELECT MAX(salary) FROM hr.employees WHERE department_id = '11111' 使用“分组依据”无助于: SELECT MAX(salary) FROM hr.employees WHERE department_id = '11111' GROUP BY () 如何使其返回未选择的行0行,未找到数据 我正在使用Oracle
SELECT MAX(salary)
FROM hr.employees
WHERE department_id = '11111'
使用“分组依据”无助于:
SELECT MAX(salary)
FROM hr.employees
WHERE department_id = '11111'
GROUP BY ()
如何使其返回未选择的行0行,未找到数据
我正在使用Oracle数据库12c。使用减号:
选择MAXsalary
来自人力资源部员工
其中部门id='11111'
减
从对偶中选择空;
DBFIDLE选择NVLMAXsalary,0
来自人力资源部员工
其中部门id='11111'
这将返回0值,然后您可以执行进一步的操作,希望有帮助。使用having子句:
请注意,部门id看起来像一个数字。如果是这样的话,比较应该是一个数字,即在11111左右去掉单引号。问题是如何让它返回0行?这将返回一个包含0的行,而不是返回0行。
SELECT MAX(salary)
FROM hr.employees
WHERE department_id = '11111'
HAVING COUNT(*) > 0;