简单排序例子
我们现在有学生数据
简单查询排序按照分数的升序排列
需求提升,小试牛刀
但是我们现在有一个需求,把分数分为3个等级,
- 优秀(80分以上)
- 合格【60-80】
- 不合格(60分一以下)
要求排序的顺序是:优秀--合格--不合格,同等级的再按照分数的升序排序
根据我们的数据,一共有5个分数(40,49,60,89,98),按照以上的排序需求,正确的排序后的结果顺序应该为(89,98,60,40,49)
看到这个(89,98,60,40,49),懵了,这完全没有规律可言,这就需要我们的自定义排序了,也就是我们这篇文章的主题
函数说明
CASE
WHEN 条件1 THEN 返回结果1
WHEN 条件2 THEN 返回结果2
ELSE 返回结果3
END 正序还是倒序
CASE 表示函数开始
END 表示函数结束
如果 条件1 成立,则返回 返回结果1, 如果 条件2 成立,则返回 返回结果2,当全部不成立则返回ELSE后面的返回结果3,而当有一个成立之后,后面的就不执行了。
实现方式1:直接排序
实现方式2:自定义排序字段后排序
需求提升,大展身手
现在我们的需求提升了,分数还是分为3个等级,
- 优秀(80分以上)
- 合格【60-80】
- 不合格(60分一以下)
要求排序的顺序是:优秀--合格--不合格,但是要求优秀的级别内按降序排序,其他按升序排序,那所期望的结果就变为(98,89,60,40,49)
上面实现方式2中实现了所有的级别内都是统一升序或者降序排序,那么要满足我们现在的需求,那就再改造一下