在select中使用Case语句

时间:2015-10-27 01:23:06

标签: mysql database

我有一张桌子

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列。

无论如何我可以获得值 - '高''低'而无需添加/指定该表中的列来存储值?

所以请建议我使用案例陈述的解决方案。

3 个答案:

答案 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;