Mysql中如何按数值分组

Mysql中如何按数值分组,mysql,sql,Mysql,Sql,我有一张表叫test。其数据如下。我需要从测试表中获取每个分组的最高数值 mysql> SELECT * FROM test; +----+-------+------+ | id | value | name | +----+-------+------+ | 1 | 1 | row1 | | 2 | 1.2 | row2 | | 3 | 1.5 | row3 | | 4 | 2 | row4 | | 5 | 3

我有一张表叫test。其数据如下。我需要从测试表中获取每个分组的最高数值

mysql> SELECT * FROM test;
+----+-------+------+
| id | value   | name  |
+----+-------+------+
|  1  |    1   | row1  |
|  2  |    1.2 | row2  |
|  3  |    1.5 | row3  |
|  4  |    2   | row4  |
|  5  |    3   | row5  |
|  6  |    3.1 | row6  |
|  7  |    3.6 | row7  |
|  8  |    4   | row8  |
|  9  |    5   | row9  |
|  10 |    5.1 | row10 |
+----+-------+------+
10 rows in set (0.00 sec)
但我需要的结果应该如下所示,以获得每个数字组中的最大值:

+----+-------+------+
| id | value   | name  |
+----+-------+------+
|  1  |    1.5 | row1  |
|  4  |    2   | row4  |
|  7  |    3.6 | row7  |
|  8  |    4   | row8  |
|  10 |    5.1 | row10 |
+----+-------+------+
5 rows in set (0.00 sec)

任何人都可以帮助我?查询将如何?

如果我理解正确,您希望按
值的整数部分对数据进行分组。如果这是正确的,可以这样做:

select max(t.id) as id, max(t.value) as value
from test as t
group by floor(t.value)
如果要获得匹配的名称,可以将此结果与原始表合并:

select a.*, t.name
from 
    (
        select max(t.id) as id, max(t.value) as value
        from test as t
        group by floor(t.value)
    ) as a
    inner join test as t on a.id = t.id

顺便说一句,在描述问题时请更加具体

如果不同行的值是唯一的,则可以使用此查询:

SELECT * FROM test WHERE VALUE IN(
    SELECT MAX(value) FROM test GROUP BY FLOOR(value)
)
查询:

结果:

| ID | VALUE |  NAME |
|----|-------|-------|
|  3 |   1.5 |  row3 |
|  4 |     2 |  row4 |
|  7 |   3.6 |  row7 |
|  8 |     4 |  row8 |
| 10 |   5.1 | row10 |

你得到了什么,你想要什么,你怎么把这些记录分组呢?谢谢贾斯汀。它在摇晃。
| ID | VALUE |  NAME |
|----|-------|-------|
|  3 |   1.5 |  row3 |
|  4 |     2 |  row4 |
|  7 |   3.6 |  row7 |
|  8 |     4 |  row8 |
| 10 |   5.1 | row10 |