按间隔对第 2 列进行排序,并对第 1 列 desc 进行排序

sort column 2 by interval and sort column 1 desc

我需要一个 SQL 语句,它首先按 1000 Hours 步的间隔进行排序,然后按 DESC 顺序对 Points 进行排序。 我无法弄清楚如何在此示例中使用 CaseBetween/case

当前结果 SELECT * FROM CurrencyUser ORDER BY Hours DESC, Points DESC LIMIT 6

+--------+-------+
| Points | Hours |
+--------+-------+
|    27  |  8005 |
|    125 |  7200 |
|    200 |  7100 |
|    567 |  1070 |
|    575 |  1050 |
|    450 |  1020 |
+--------+-------+

这是我想要的结果

+--------+-------+
| Points | Hours |
+--------+-------+
|    27  |  8005 |
|    200 |  7100 |
|    125 |  7200 |
|    575 |  1050 |
|    567 |  1070 |
|    450 |  1020 |
+--------+-------+

点数和小时数都是正常整数

SELECT * FROM  CurrencyUser ORDER BY cast(Hours/1000 as int) DESC, Points DESC LIMIT 6;

使用 FLOOR(Hours / 1000)Hours DIV 1000

SELECT *
FROM  CurrencyUser
ORDER BY Hours DIV 1000 DESC, Points DESC

请注意,转换为 UNSIGNED 将充当 ROUND(),因此 7400 将在组 7 中,但 7600 在组 8。您的示例数据未涵盖此案例。

运行这次测试看区别:

set @Hours = 7600;

select cast(@Hours/1000 as unsigned)
     , round(@Hours/1000)
     , floor(@Hours/1000)
     , @Hours DIV 1000

演示:http://rextester.com/DZYZ80148