mysql - 从每个团队中获取最多 2 个用户,结果最好 MYSQL

标签 mysql sql group-by

<分区>

| id | user  | team   | month | result |
|----|-------|--------|-------|--------|
| 1  | Joe   | red    | sept  | 100    |
| 2  | Joe   | red    | oct   | 40     |
| 3  | Jim   | red    | sept  | 70     |
| 4  | Jim   | red    | oct   | 50     |
| 5  | Susy  | red    | sept  | 40     |
| 6  | Tim   | blue   | sept  | 60     |
| 7  | Tim   | blue   | oct   | 100    |
| 8  | Betty | blue   | sept  | 70     |
| 9  | Dave  | blue   | sept  | 20     |
| 10 | Stan  | green  | oct   | 40     |
| 11 | Alan  | green  | sept  | 80     |
| 12 | Tina  | green  | oct   | 100    |
| 13 | Tina  | green  | sept  | 30     |
| 14 | Rick  | yellow | oct   | 50     |
| 15 | Ellen | yellow | oct   | 60     |

这可能吗。

我需要从每个团队中获取最多 2 个结果最好的用户。

例如以下结果是每队得分最高的2名选手:

| 1  | Joe   | red    | sept  | 100    |
| 3  | Jim   | red    | sept  | 70     |
| 7  | Tim   | blue   | oct   | 100    |
| 8  | Betty | blue   | sept  | 70     |
| 12 | Tina  | green  | oct   | 100    |
| 11 | Alan  | green  | sept  | 80     |
| 15 | Ellen | yellow | oct   | 60     |
| 14 | Rick  | yellow | oct   | 50     |

或者是对多个查询执行此操作的唯一真正方法?

最佳答案

你可以这样做:

SELECT * FROM 
    (SELECT t.id,t.team,count(*) as rnk
    FROM YourTable t
    INNER JOIN YourTable s
     ON(t.id = s.id and t.team = s.team and t.result >= s.result))x
WHERE rnk <= 2

关于mysql - 从每个团队中获取最多 2 个用户,结果最好 MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35773402/

相关文章:

mysql - "Could not load file or assembly ' MySql.Web“但是我没有使用MySQL?

php - sql中如何计算总计列中的百分比

sqlite - 在sqlite中使用group by时选择某行的rowid

mysql - 检索每组中的最后一条记录 - MySQL

php - 带有like子句的mysql if语句返回null

Mysql 触发器在变量中串联不起作用

php - 使用 Angular 从 mysql 自动重新加载表

java - jTable 将数据输入到列中

python - 不创建索引的 SQL 优化

Mysql查询-按国家、地区划分的总和及占总数的百分比(一般)