我有如下表格:
| 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 的最大值和第二大值来做减法,如下所示:
| event_type | value |
|------------|-------|
| 2 | -11 |
| 3 | 2 |
目前,我只能按如下方式获取每个 event_type 的最大值:
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 |
我想我需要知道如何获得第二大值(value)。因此,我可以做减法。
这是我的 sql fiddle : 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/