如何重新组合和计算列中的元素

How to regroup and count elements within a column

我有超市组织的任务数据:

目前数据是按task_id(单个任务)组织的我想按商店和周组织它,然后计算每周在一个类别中分配的任务数量。

此外,类别列目前过于细化,这意味着我想将热狗、培根、火鸡等归为肉,将番茄酱、芥末、蛋黄酱归为酱汁。

我本质上是在尝试反映数据透视表 table 中的结果,其中 store_id、week_start、忙碌和经理是行,类别是列,然后将类别作为中间的数据求和。但在这种情况下,类别使用索引(匹配函数。

我试过运行类似于

的东西

''''SQL

SELECT store_id, week_start, busy, mananger
COUNT(CASE WHEN category = 'hotdog' or 'bacon' or 'turkey') AS MEAT, 
COUNT(CASE WHEN category = 'ketchup' or 'mustard') AS Sauce
FROM table1 
GROUP BY store_id, week_start;

但我收到的错误是:

AnalysisException:第 2:undefined 行的语法错误:'ketchup' AS Sauce) ^ 遇到:如预期:AND、BETWEEN、DIV、ILIKE、IN、IREGEXP、IS、LIKE、NOT、OR、REGEXP、RLIKE、THEN CAUSED BY:异常:语法错误

如果你想计算值,那么我更喜欢 sum() 而不是 count()。无论哪种方式,您都需要一个格式正确的 case 表达式:

SELECT store_id, week_start, mananger,
       SUM(CASE WHEN category IN ('hotdog','bacon', 'turkey') THEN 1 ELSE 0 END) AS MEAT, 
       SUM(CASE WHEN category IN ('ketchup', 'mustard') THEN 1 ELSE 0 END) AS Sauce
FROM table1 
GROUP BY store_id, week_start;

我还从 SELECT 列表中删除了 busySELECT 中的未聚合列应与 GROUP BY.

中的列兼容