Mysql 在sql中计算列值
我在MySQL数据库中有一个表,如下所示:Mysql 在sql中计算列值,mysql,subquery,Mysql,Subquery,我在MySQL数据库中有一个表,如下所示: 从pi中选择* Employee\u id年 1000 2014 1000 2015 1001 2014 1002 2014 1002 2015 1003 2015 1004 2015 当我运行以下查询时: 选择员工id,最小(年) 来自pi 按员工id分组 我得到: Employee\u id年 1000 201
从pi中选择*代码>
Employee\u id年
1000 2014
1000 2015
1001 2014
1002 2014
1002 2015
1003 2015
1004 2015
当我运行以下查询时:
选择员工id,最小(年)
来自pi
按员工id分组代码>
我得到:
Employee\u id年
1000 2014
1001 2014
1002 2014
1003 2015
1004 2015
现在,我想在原始表值中添加一个新列,如果行的年份值等于员工id的最小值(年份),则该列的值应为“0”,否则为“1”。我试过:
SELECT Employee_id, MIN(Year),
(CASE WHEN(SELECT MIN(Year) FROM pi WHERE Employee_id = Employee_id < Year) THEN '0' ELSE '1' END) New
FROM pi
GROUP BY Employee_id;
我得到的只是:
Employee\u id新年
1000 2014 1
我尝试了一些额外的查询,但它们都呈现了错误消息或与这两个相同的结果,所以我被困在这里。有什么建议吗?
谢谢。您可以在min表上使用join
select t.Employee_id, t.min_year
, case when pi.year = t.min_year then 0 else 1 end as my_check
from pi inner join (
SELECT Employee_id, MIN(Year) as min_year
FROM pi
GROUP BY Employee_id
) t on t.Employee_id = pi.Employee_id
select t.Employee_id, t.min_year
, case when pi.year = t.min_year then 0 else 1 end as my_check
from pi inner join (
SELECT Employee_id, MIN(Year) as min_year
FROM pi
GROUP BY Employee_id
) t on t.Employee_id = pi.Employee_id