如何通过结合 COALESCE 的 2 列进行排序?

How to order by 2 columns combining COALESCE?

我有一个关于订购 SQL table 的问题。而且我无法在堆栈或 google 上找到解决方案。我的table"Score"好像是这样的:

Name    Total   Tries  Game1  Game2  Game3
------------------------------------------
Sam     65      61     10     31     24             
Tom             55     11            30
Jim     65      58     9      34     22 
Dan     62      52     10     30     22

注意:"Total" 列为 COUNT(Game1 + Game2 + Game3)。

可以看到Tom的Total记录是空的,因为Tom没有玩Game2

我想按如下方式订购 table(优先级最高-最低):

  1. 空单元格(在 table 的底部)
  2. 总计 (ASC)
  3. 尝试 (ASC)

所以我的 table 必须看起来像:

Name    Total   Tries  Game1  Game2  Game3
------------------------------------------
Dan     62      52     10     30     22
Jim     65      58     9      34     22 
Sam     65      61     10     31     24             
Tom             55     11            30

我必须使用哪个 SQL 查询?

这是我此刻的,但它不会在 "Tries":

上排序
SELECT name, Game1+Game2+Game3 AS Total, Game1, Game2, Game3, Tries
FROM Score 
ORDER BY CASE WHEN Tries or Game1 or Game2 or Game3 IS NULL THEN 0 ELSE 1 END DESC, 
         COALESCE(Game1,0) + COALESCE(Game2,1) + COALESCE(Game3,2) ASC

根据 order by 中的 CASE 语句,考虑到 NULL 而不是 Total 中的 empty。试试这个 Order by

ORDER BY COALESCE(Total,99999999999) ASC,Tries ASC

99999999999 将使 NULL 值排在末尾,其他记录将按升序排列

ORDER BY case when Total is null then 0 else 1 end desc,Total ASC,Tries ASC