Mysql中如何按数值分组
我有一张表叫test。其数据如下。我需要从测试表中获取每个分组的最高数值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
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 |