雪花有助于在分组时创建第三个变量

snowflake help to create 3rd variable while grouping

我有如下数据集,为此我需要按如下所示的 3 个变量对其进行分组:

需要如下结果:

我相信你知道如何按月和频道分组并进行计数,所以这里唯一棘手的事情就是计算出“两者”

如果您按标记分组并查看最小通道与最大通道,您会发现最小最大值相同或不同。如果它们不同,则为“两者”

SELECT
  MONTH(date) as mnth,
  CASE WHEN min(channel) = max(channel) THEN min(channel) ELSE 'both' END as channel
FROM t
  GROUP BY MONTH(date), token

当标记为 1 时,最小值是“电子邮件”,最大值是“文本”——因为它们不同,所以会变成“两者”。对于令牌 3,最小值和最大值是相同的“电子邮件”,因此我们只使用最小值来发送“电子邮件”。最终结果是一组唯一的令牌值和 email/text/both。即使有重复的值,只要没有拼写错误,它就可以解决(但是如果你有一个 token=3,channel=emial 那么这个方法就不能工作;清理你的数据)

您可以将此查询的结果提供给另一个执行您的 month/channel/count 的分组(将所有此查询作为子查询或执行另一个分组依据的查询的 CTE)