有没有办法使用自定义分组对 SQL 中的输出数据进行排序?
Posted
技术标签:
【中文标题】有没有办法使用自定义分组对 SQL 中的输出数据进行排序?【英文标题】:Is there a way to sort output data in SQL using custom groupings? 【发布时间】:2020-10-21 06:11:57 【问题描述】:我正在寻找一种在 SQL 输出中创建自定义符号分组的方法。例如,我有一个看起来像这样的表。
Symbol Date Value
AAPL 2020-06-05 1,000
JBLU 2020-06-20 1,000
JBLU 2020-06-24 1,000
AMZN 2020-06-08 1,000
AAPL 2020-06-11 1,000
MSFT 2020-06-27 1,000
RDSA 2020-06-11 1,000
AAL 2020-06-16 1,000
JBLU 2020-06-28 1,000
RDSA 2020-06-11 1,000
AAL 2020-06-21 1,000
理想情况下,我希望创建自定义分组,在其中输出一个表格,该表格汇总了科技公司(AAPL、MSFT、AMZN)和航空公司(JBLU、AAL)等组的总数,并忽略了其他值 (RDSA),例如比如:
Class Value
Airlines 5,000
Tech Companies 4,000
【问题讨论】:
【参考方案1】:您可以使用case
表达式。想法是使用where
子句过滤您感兴趣的symbol
s,然后在select
子句中对其进行解码:
select
case when symbol in ('AAPL', 'MSFT', 'AMZN')
then 'Tech Companies'
else 'Airlines'
end class,
sum(value) value
from mytable
where symbol in ('AAPL', 'MSFT', 'AMZN', 'JBLU', 'AAL')
group by 1
group by
的位置形式很方便避免重复 case
表达式。
【讨论】:
【参考方案2】:你可以使用case
:
select (case when symbol in ('AAPL', 'MSFT', 'AMZN') then 'Tech'
when symbol in ('JBLU', 'AAL') then 'Airlines'
end) as class, sum(value)
from t
group by class;
也就是说,我建议使用带有指定类的列的 symbols
表。
【讨论】:
以上是关于有没有办法使用自定义分组对 SQL 中的输出数据进行排序?的主要内容,如果未能解决你的问题,请参考以下文章