我有一张桌子如下:

| 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/

10-14 03:21