我有这样的代码:发现价值
SELECT username, first_name, last_name, NVL(salary,0) "salary"
FROM customer
WHERE NVL(salary,0) < AVG(NVL(salary, 0));
试图找出哪些用户拥有低于平均工资和一个用户没有工资(“零”我必须转换为0 )。
最后一句“avg(nvl(salary,0))”不起作用,我不能为了我的生活找出原因。如果我用一般的实际数字代替陈述,那么一切正常。
我有这样的代码:发现价值
SELECT username, first_name, last_name, NVL(salary,0) "salary"
FROM customer
WHERE NVL(salary,0) < AVG(NVL(salary, 0));
试图找出哪些用户拥有低于平均工资和一个用户没有工资(“零”我必须转换为0 )。
最后一句“avg(nvl(salary,0))”不起作用,我不能为了我的生活找出原因。如果我用一般的实际数字代替陈述,那么一切正常。
你可以试着预先选择的平均水平:
select username,first_name,last_name,nvl(salary,0) "salary"
from customer
where nvl(salary,0) < (select avg(nvl(salary,0)) from customer);
只能在select
和having
条款使用avg
,这就是为什么你有一个错误。
也不要使用nvl
,而是使用3210来代替,这对大数据来说应该会更快。
SELECT username,first_name,last_name, NVL(salary,0) "salary"
FROM customer
WHERE NVL(salary,0) < (SELECT AVG(NVL(salary,0)) FROM customer);
这很容易得到。
下面是使用分析功能的方法:
select username,
first_name,
last_name,
salary
from (select username,
first_name,
last_name,
nvl(salary,0) salary,
avg(nvl(salary,0)) over() avg_all_salaries
from customer)
where salary < avg_all_salaries
它可以很容易地也显示所有薪水的平均值,应该是有史以来出现。
定义“不起作用”。你是否收到错误信息 - 如果有,它是什么?查询是否运行但提供了错误的结果? –
您需要选择子查询中的平均值并将此结果与实际工资进行比较 – SomeJavaGuy
我收到此错误消息:“00934. 00000 - ”组功能在此处不允许“” – Mongzyy