如果我有一个这样的表:
FRUIT
------------------------
GRANNY SMITH
BANNANA
CHERRY
RED DELICIOUS
DURIAN
FIG
GRAPE
LIME
ORANGE
BRAEBURN
TANGERINE
GRANNY SMITH
ORANGE
ORANGE
GRANNY SMITH
LIME
FIG
FIG
GRANNY SMITH
BRAEBURN
我想使用SQL产生以下输出,我该怎么做?我想总结一下苹果下不同苹果品种的数量,柑桔类型的数量也一样,但是其他一切都只是一个数量。
FRUIT COUNT
----------- ------
APPLE 7
BANNANA 1
CHERRY 1
CITRUS 6
DURIAN 1
FIG 3
GRAPE 1
我尝试将嵌套聚合与条件条件一起使用,但SQL不支持嵌套聚合,因此我正在寻找其他一些想法。
您可以使用现有的CASE语句进行GROUP BY,但必须使用派生表(或在GROUP BY中重复该庞大的CASE):
select FRUIT, COUNT(*)
from
(
select CASE
WHEN FRUIT IN ('GRANNY SMITH', 'RED DELICIOUS', ...) THEN 'APPLE'
WHEN FRUIT IN ('ORANGE', 'TANGERINE', ...) THEN 'CITRUS'
ELSE FRUIT
END AS FRUIT
from tab
) dt
group by FRUIT
order by FRUIT
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句