2017-06-18 74 views
0

起初我:SQL最大子

CREATE TABLE Persons (
    id INTEGER not null, 
    capital_loss INTEGER, 
    capital_gain INTEGER, 
    salary INTEGER, 
    PRIMARY KEY (id) 
); 

我想要得到的ID和工资一排这样的:

max(capital_gain-capital_loss) and salary =50 

谢先进

+0

如果什么有多个行(不是只有一个)具有相同的最大值(capital_gain-capital_loss)? – DevilaN

+0

你试过的查询是什么? –

+1

你使用了什么[标签:rdbms]? – Mureinik

回答

0

怎么样这

select id, salary, max(capital_gain - capital_loss) 
from Persons 
where salary = 50 
group by id, salary 
+0

它不返回任何输出... – Yael

+0

@Yael你有50薪水的人尝试没有where语句 –

+0

有,我有,我?忘了回答我正在使用sql而不是MySQL,现在它返回所有行,在做完capital_gain - capital_loss后存在,而不是它们的最大值,例如666 50 8614 ,705 50 25236 ,706 50 0 ,726 50 0 ,940 50 0。哪个ID 705是最大(25236) – Yael

0

考虑到你的条件NS(不管哪一行从所有最大者的返回),如果你正在使用MySQL:

SELECT id, salary FROM Persons 
WHERE salary=50 
ORDER BY (capital_gain - capital_loss) DESC LIMIT 1; 
+0

其给出错误:错误消息= ORA-00933 – Yael

+0

请在你的问题清楚说明您正在使用的数据库引擎。 我的回答显然是以mysql为导向的(正如答案中所述)。 – DevilaN

+0

我在java中使用Oracle JDBC Driver。所以它的SQL不是MySQL – Yael