我有一张桌子如下:
| event_type | value | date |
|------------|-------|-------------------------|
| 2 | -7 | March, 01 2016 09:00:00 |
| 2 | 4 | March, 01 2016 08:00:00 |
| 2 | 21 | March, 01 2016 07:00:00 |
| 3 | 10 | March, 01 2016 06:00:00 |
| 3 | 8 | March, 01 2016 05:00:00 |
| 4 | 21 | March, 01 2016 04:00:00 |
我要获取每个事件类型的最大值和第二大值,以执行以下减法操作:
| event_type | value |
|------------|-------|
| 2 | -11 |
| 3 | 2 |
目前,我只能获得每个事件类型的最大值,如下所示:
select event_type, value, max(date)
from events
group by event_type
having (count(event_type) >= 2);
| event_type | value | max(date) |
|------------|-------|-------------------------|
| 2 | -7 | March, 01 2016 09:00:00 |
| 3 | 10 | March, 01 2016 06:00:00 |
我想我需要知道如何获得第二大价值。所以,我可以做减法运算。
这是我的sql小提琴:
http://sqlfiddle.com/#!9/45e06e/6
最佳答案
你能试试这个吗?
select event_type, (value - (select e2.value from events e2 where e2.event_type = e1.event_type and e2.date != e1.date order by date desc limit 1)), max(date)
from events e1
group by event_type
having (count(event_type) >= 2);
关于mysql - 如何获得最大值和第二最大值相减?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35979268/