如何在 SQL 中定义临时排序?

问题描述 投票:0回答:2

我有一个要汇总的表格,我想以某种方式对其汇总结果进行排序。

假设这是一个包含水果和每周销售额的表格:我想要一个按水果列出总销售额的输出(到目前为止没有什么奇怪的),但水果应该按如下方式排序:

  • 蔓越莓
  • 香蕉
  • 草莓
  • 所有其他按字母顺序排列

是否可以仅使用 SQL 来做到这一点,而不需要定义一个表来设置每种水果的排序?

如果使用特定的 SQL 方言或函数,我的目标是 SQLite

sql sqlite
2个回答
0
投票

只需一个 CASE 语句...

ORDER BY CASE MyColum WHEN 'cranberries' THEN '001'
                      WHEN 'bananas' THEN '002'
                      WHEN 'strawberries' THEN '003'
                      ELSE MyColum 
         END

-1
投票

是的,可以在 SQL 中实现这种排序,而无需定义单独的表并仅使用 SQLite。方法如下:

SELECT fruit, 
   SUM(sales) AS total_sales
FROM your_table
GROUP BY fruit
ORDER BY 
CASE fruit
WHEN 'cranberries' THEN 1
WHEN 'bananas' THEN 2
WHEN 'strawberries' THEN 3
ELSE 4
END,
fruit;

此查询首先使用 GROUP BY 和 SUM 执行标准聚合,以查找每种水果的总销售额。

© www.soinside.com 2019 - 2024. All rights reserved.