SQL:是否可以根据“喜欢”函数的结果进行“分组”?

问题描述

当然:

WITH Fruits AS (
    SELECT 
        CASE 
           WHEN m.str LIKE '%APPLE%' THEN 'Apple'
           WHEN m.str LIKE '%ORANGE%' THEN 'Orange' 
        END AS FruitType           
    FROM MESA m
    WHERE m.str LIKE '%FRUIT%')
SELECT FruitType, COUNT(*) 
FROM Fruits
WHERE FruitType IN ('Apple', 'Orange')
GROUP BY FruitType;

解决方法

我正在使用Oracle SQL,并且想对一些“喜欢”函数结果的不同行进行分组。举例说明:


假设我有一个表MESA,其中的一列是一个巨大的字符串。 我正在计算与特定模式匹配的行数:

SELECT m.str,count(*)
FROM MESA m
WHERE m.str LIKE '%FRUIT%'
AND (m.str LIKE '%APPLE%' OR m.str LIKE '%ORANGE%')

因此,假设此查询的结果为:

水果..afsafafasfa … RED_APPLE 20

水果..afsafafasfa … YELLOW_APPLE 12

水果..afsafafasfa … GREEN_APPLE 3

水果..afsafafasfa … PURPLE_ORANGE 4

水果..afsafafasfa …红色_橙色45

但我希望我的结果是:

苹果35

橙色49


这可能吗?如果是这样,怎么办?:)

注释和代码段非常受赞赏。

PS:当然,查询和结果比上面的示例更复杂。我只是为了简化解释而写它。

干杯..