Aggregate SQL中的条件计数和求和

Aggregate SQL中的条件计数和求和,aggregate,snowflake-cloud-data-platform,Aggregate,Snowflake Cloud Data Platform,我有这张未加工的桌子在下面。我想做的是根据3种“点击类型”有条件地统计评论的数量 Reviewer date id 3_hit 2_hit 1_hit jack 1 Sep 1 TRUE FALSE FALSE jack 1 Sep 1 FALSE TRUE FALSE jack 1 Sep 3 TRUE FALSE FALSE jack 1 Sep 4 FALSE TRUE FALSE

我有这张未加工的桌子在下面。我想做的是根据3种“点击类型”有条件地统计评论的数量

Reviewer date   id  3_hit   2_hit   1_hit
jack    1 Sep   1   TRUE    FALSE   FALSE
jack    1 Sep   1   FALSE   TRUE    FALSE
jack    1 Sep   3   TRUE    FALSE   FALSE
jack    1 Sep   4   FALSE   TRUE    FALSE
jack    1 Sep   5   FALSE   TRUE    FALSE
tim     2 Sep   6   TRUE    FALSE   FALSE
tim     2 Sep   7   FALSE   FALSE   TRUE
我想查询以下三个条件:

  • 如果一个id对于3次命中为真,并且对于另一行的2次命中或1次命中也为真,则将其计为1“3次命中”

  • 如果一个id对于2次命中为真,但对于另一行中的1次命中也为真,则计算为1“2次命中”

  • 如果1次命中的id为真,2次命中和3次命中的id为假,则计算为1“1次命中”

  • *注意,假设第一个表的日期字段中有时间戳(不仅仅是日期)

    然后,我希望能够获得每种类型的每次审查的时间,如下所示:

    reviewer    date    review type r_count reviews/hour
    jack       1 Sep       3_hit       2    2/6
    jack       1 Sep       2_hit       2    2/4
    tim        2 Sep       3_hit       1    2/4
    tim        2 Sep       1_hit       1    1/2
    
    我知道这需要几个级别的聚合,这很好。最重要的是,最后一个表可以使用Looker进行筛选,这样我就可以按审阅类型和日期进行筛选

    我不确定这在SQL中是否可行,但我不知道如何模拟一个新列,然后根据该列中的结果数进行计数。这可能吗?我想这将是一个支点

    注意我也意识到每小时的评论并不准确,因为不同的评论在时间上会有重叠。不幸的是,这个日期/时间是我进行此类分析的最佳时间


    非常感谢您的帮助!谢谢

    还是雪花?请只标记一个数据库。抱歉,删除了MySQL,留下了雪花。当你说“另一行中的2\u hit或1\u hit也有TRUE”时,你是指数据集中的任何其他行,具有相同审阅者/日期的任何其他行,具有相同审阅者/日期/id的任何其他行,还是其他什么?如果您可以提供一个完整的样本数据集,即包含日期的时间部分,那么提供准确的解决方案(与您的输出相匹配)也会更容易
    reviewer    date    review type r_count reviews/hour
    jack       1 Sep       3_hit       2    2/6
    jack       1 Sep       2_hit       2    2/4
    tim        2 Sep       3_hit       1    2/4
    tim        2 Sep       1_hit       1    1/2