如何按两列销售额差值对SQL查询结果进行排序?
问题解答
首先明确:不能用WHERE条件来实现排序需求——WHERE子句的作用是过滤符合条件的数据行,而非控制结果集的排序顺序,排序必须通过ORDER BY子句实现。
你的需求是按「今年销售额 - 去年销售额」的差值从高到低排序(差值最大的排在最前),正确的做法是把差值计算逻辑放在ORDER BY中,并指定DESC(降序)规则。
另外注意你描述里的列名是2022和2021,但提供的SQL里写的是2012和2013,应该是笔误,下面给出对应两种场景的修正写法:
若实际列名是2022(当年)和2021(去年):
SELECT customerid, full_name, "2021 Sales", "2022 Sales", ("2022 Sales" - "2021 Sales") AS sales_diff -- 可选:将差值作为单独列展示 FROM customer_loyalty ORDER BY ("2022 Sales" - "2021 Sales") DESC LIMIT 10;
若实际列名是2013和2012(对应你提供的SQL写法):
SELECT customerid, full_name, "2012 Sales", "2013 Sales", ("2013 Sales" - "2012 Sales") AS sales_diff -- 可选:将差值作为单独列展示 FROM customer_loyalty ORDER BY ("2013 Sales" - "2012 Sales") DESC LIMIT 10;
额外提醒:你当前SQL里的DISTINCT如果是针对customerid(假设它是唯一标识),那这个关键字是多余的,可直接去掉,不会影响结果。
内容的提问来源于stack exchange,提问作者Pags33
相关产品推荐
相关产品推荐

