You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询中ORDER BY DESC对[%]列排序未正常生效是什么原因?

问题根因

你排序时使用的[%]是FORMAT函数输出的字符串类型别名,不是原始的浮点数值列。字符串按字符编码逐位比较,会出现9%排序优先级高于10%的不符合数值逻辑的结果,因此降序排序不符合预期。

修正方案

只需要将ORDER BY的排序依据替换为原始浮点列即可,修正后代码如下:

SELECT 
    YEAR, 
    Strata, 
    Strata_Name, 
    FORMAT([%]/10000, 'P') [%] 
FROM 
    [dbo].[Depression_in_California] 
WHERE 
    Strata_Name = 'Male' 
-- 直接按原始浮点列排序,避免使用格式化后的字符串别名
ORDER BY [dbo].[Depression_in_California].[%] DESC;

也可以直接按计算后的数值排序,写法更直观:

SELECT 
    YEAR, 
    Strata, 
    Strata_Name, 
    FORMAT([%]/10000, 'P') [%] 
FROM 
    [dbo].[Depression_in_California] 
WHERE 
    Strata_Name = 'Male' 
ORDER BY [%]/10000 DESC;

注意:如果要避免别名和原列重名导致的逻辑混淆,建议给格式化后的百分比列设置不同的别名,比如formatted_percent。

内容的提问来源于stack exchange,提问作者Freddmo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:45:03