MySQL为空别名赋值
结果表:MySQL为空别名赋值,mysql,Mysql,结果表: result_event | name | position -------------+---------------+------------ 1 | Jason Smith | 1 1 | David Johnson | 2 1 | Randy White | 3 1 | Billy Hansen | 4 2 | Wally Man
result_event | name | position
-------------+---------------+------------
1 | Jason Smith | 1
1 | David Johnson | 2
1 | Randy White | 3
1 | Billy Hansen | 4
2 | Wally Mann | 1
2 | Jason Smith | 2
2 | Billy Hansen | 3
2 | David Johnson | 4
2 | Randy White | 5
我有一张表,上面有比赛结果。我想根据两站比赛中的组合位置对车手进行分类。(如1+2=3,2+4=6等)车手“沃利·曼”没有参加第一场比赛,因此即使他赢得了第二场比赛,他的得分也应该落后于所有其他人
预期结果:
Name | Race1 | Race2
--------------+--------+-------
Jason Smith | 1 | 2
David Johnson | 2 | 4
Billy Hansen | 4 | 3
Randy White | 3 | 5
Wally Mann | NULL | 1
当前查询:
SELECT name,
CASE(WHEN result_event=1 then position else 0 END) Race1,
CASE(WHEN result_event=2 then position else 0 END) Race2,
SUM(position) eventscore
FROM results
GROUP BY name
ORDER BY eventscore DESC
在我当前的查询中,“Wally Mann”是列表中的第一个,因为(Null+1)<(1+2)。在所有有两个结果的参赛者之后,我能做些什么使(Null+1)结果排序 将您的订单更改为按记录数DESC排序,然后按事件分数排序
ORDER BY count(*) DESC, eventscore ASC
您可以尝试按名称分组,并添加一个条件count(*)=2,然后根据累积分数对它们进行排序,然后为count(*)=1编写联合查询
select name from results
group by name
order count(*) desc, sum(position);