mysql为空别名赋值

3ks5zfa0  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(310)

结果表:

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,等等)赛车手“wally mann”没有参加第一场比赛,所以即使他赢了第二场比赛,他也应该落后于所有其他人。
期望结果:

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)结果排序?

ego6inou

ego6inou1#

select name from results
group by name
order count(*) desc, sum(position);
3bygqnnd

3bygqnnd2#

将order by更改为按记录数desc排序,然后按eventscore排序

ORDER BY count(*) DESC, eventscore ASC

相关问题