select—是否有一种方法可以使用自定义分组对sql中的输出数据进行排序?

oymdgrw7  于 2021-08-01  发布在  Java
关注(0)|答案(2)|浏览(220)

我正在寻找一种在输出中用sql创建自定义符号分组的方法。例如,我有一张类似这样的table。

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
mbyulnm0

mbyulnm01#

你可以使用 case 表情。我们的想法是使用 where 要在上筛选的子句 symbol 你感兴趣的,然后在 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 表情。

oxalkeyp

oxalkeyp2#

你可以用 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 具有指定类的列的表。

相关问题