我有一张桌子
id salary
1 100
2 200
3 300
4 400
现在我想找到平均工资,然后与每个人的工资进行比较,然后说出'High'或'Low'。
这是否可以通过案例陈述完成或者请给我一些好方法?
我的查询是
select xxxxxxxxxx =
case
when(salary>(select avg(salary)from table_name))
then 'High'
when(salary<(select avg(salary)from table_name))
then 'low'
end;
但是我的问题是我的表格中没有xxxxxxxxx列。
无论如何我可以获得值 - '高'或'低'而无需添加/指定该表中的列来存储值?
所以请建议我使用案例陈述的解决方案。
答案 0 :(得分:1)
有几种方法可以做到这一点。这是一个选项:
select id,
case when salary > avgsalary then 'High' else 'Low' end
from yourtable y
join (select avg(salary) avgsalary from yourtable) y2
答案 1 :(得分:1)
使用join
:
select tn.*,
(case when tn.salary > a.avgs then 'High'
when tn.salary < a.avgs then 'low'
end)
from table_name tn cross join
(select avg(salary) as avgs from tn) a;
答案 2 :(得分:1)
试试这个:
SELECT A.employee_id,
A.salary,
(CASE WHEN b.ave > A.salary THEN 'LOW'
WHEN b.ave=A.salary THEN 'AVERAGE'
ELSE 'HIGH' END) remarks
FROM oehr_employees A,
(select avg(salary) ave from oehr_employees) b;