Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在select中使用Case语句_Mysql_Database - Fatal编程技术网

Mysql 在select中使用Case语句

Mysql 在select中使用Case语句,mysql,database,Mysql,Database,我有一张桌子 id salary 1 100 2 200 3 300 4 400 现在我想找出平均工资,然后与每个人的工资进行比较,然后说“高”或“低” 这是否可以通过案例陈述或请建议我一些好的方法来实现 我的问题是 select xxxxxxxxxx = case when(salary>(select avg(salary)from table_name)) then 'Hig

我有一张桌子

id     salary

1            100

2            200

3            300

4            400
现在我想找出平均工资,然后与每个人的工资进行比较,然后说“高”或“低”

这是否可以通过案例陈述或请建议我一些好的方法来实现

我的问题是

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列

我是否可以在不添加/指定表中的列来存储值的情况下获取值-“高”或“低”


因此,请给我推荐一个使用案例语句的解决方案。

有几种方法可以做到这一点。这里有一个选择:

select id, 
    case when salary > avgsalary then 'High' else 'Low' end 
from yourtable y
   join (select avg(salary) avgsalary from yourtable) y2

有几种方法可以做到这一点。这里有一个选择:

select id, 
    case when salary > avgsalary then 'High' else 'Low' end 
from yourtable y
   join (select avg(salary) avgsalary from yourtable) y2

有几种方法可以做到这一点。这里有一个选择:

select id, 
    case when salary > avgsalary then 'High' else 'Low' end 
from yourtable y
   join (select avg(salary) avgsalary from yourtable) y2

有几种方法可以做到这一点。这里有一个选择:

select id, 
    case when salary > avgsalary then 'High' else 'Low' end 
from yourtable y
   join (select avg(salary) avgsalary from yourtable) y2
使用联接:

使用联接:

使用联接:

使用联接:

试试这个:

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;
试试这个:

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;
试试这个:

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;
试试这个:

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;