如何在单个查询中使用计数,“喜欢”和分组依据



我需要类似的东西

SELECT sum(case when name LIKE 'nick-1%' then 1 end) as Count,
       name 
FROM dummytable 
GROUP BY CASE 
           WHEN name LIKE 'nick-1%' THEN 'nick' 
           WHEN name LIKE 'vicky-1%' THEN 'vicky' 
           ELSE NULL 
         END
Name  Count
nick    10
vicky   17
Nick

表示它应该包含类似"Nick%"的名称Vicky 意味着它应该包含像"Vicky%"这样的名称

在我的查询中,我无法查看名称列,因为使用 sum 它要求我将其添加到分组依据,但我无法将其添加到分组依据,因为我正在为其使用 like 函数

要解决您遇到的问题,您只需要在SELECT中重复当前GROUP BY中相同的CASE表达式:

SELECT CASE WHEN name LIKE 'nick-1%'  THEN 'nick'
            WHEN name LIKE 'vicky-1%' THEN 'vicky'
            ELSE NULL END AS Name,
       COUNT(*) AS Count
FROM dummytable
GROUP BY CASE WHEN name LIKE 'nick-1%'  THEN 'nick'
              WHEN name LIKE 'vicky-1%' THEN 'vicky'
              ELSE NULL END

在原始查询中,您混合了两种类型的聚合。 如果要对整个表使用条件聚合(原始SELECT尝试执行),则可以使用以下查询:

SELECT 'nick' AS Name, SUM(CASE WHEN name LIKE 'nick-1%' THEN 1 ELSE 0 END) AS Count
FROM dummytable
UNION ALL
SELECT 'vicky', SUM(CASE WHEN name LIKE 'vicky-1%' THEN 1 ELSE 0 END)
FROM dummytable

相关内容

  • 没有找到相关文章

最新更新