如何在GROUP BY中选择具有最大值的记录?

时间:2013-08-13 08:38:21

标签: mysql sql

您好我有一个重复ID的表,链接不同的任务,每个任务的完成级别显示如下:

id      date                    perc     taskid
4722    2007-11-08 16:20:14     0.00      3
4724    2007-11-20 15:32:40     25.71     5
4722    2007-11-08 16:20:14     0.00      8
4727    2008-01-29 10:19:39     0.00      18
4726    2008-01-28 11:44:50     7.14      13
4726    2008-01-28 11:44:50     34.29     90
4728    2008-02-11 13:14:14     2.86      21

我想以最高的百分比返回不同的ID ...即

4722    2007-11-08 16:20:14     0.00      3
4724    2007-11-20 15:32:40     25.71     5
4727    2008-01-29 10:19:39     0.00      18
4726    2008-01-28 11:44:50     34.29     90
4728    2008-02-11 13:14:14     2.86      21

我将使用GROUP BY我假设,但我如何获得每列的最大值?

奖励...如果百分比相同,是否可以按最新date进一步排序?

更新 我希望具有最高百分比的taskid保留在记录中吗?

2 个答案:

答案 0 :(得分:5)

您在寻找

吗?
SELECT id, date, MAX(perc) as MAX_PERC
FROM YourTable
GROUP BY id, date

给定ID的日期可能在条目之间有所不同吗?或者他们总是在同一个日期?

如果是这样,您可能需要查看The Rows Holding the Group-wise Maximum of a Certain Column

答案 1 :(得分:0)

尝试

SELECT id,date,MAX(perc) AS MAX_PERCENT
FROM My_Table
GROUP BY id

您还可以GROUP BY约会。