【问题标题】:Clickhouse Array Join with Left Join and Computed CountsClickhouse 数组连接与左连接和计算计数
【发布时间】:2020-10-02 14:05:27
【问题描述】:

我有一个 SearchImpressions 表,该表有一个嵌套类型列,其中包含在搜索期间显示的 Product_Id 和 Price 数组。我还有一个表格,其中包含有关用户何时单击其中一个搜索结果的详细信息。

问题:

给定一个产品 ID,我想找出按天分组的总展示次数和点击次数。

产品搜索结果表

EventDateTime 查询结果(ProductId[], Price[])

产品点击次数表

EventDateTime 产品ID

所需输出

EventDate    ProductId TotalImpressions TotalClicks

11-11-2020   0001      56               6
12-11-2020   0002      21               0

我已经尝试过,但两个计数似乎相同

SELECT pr.EventDate,
       impressions.ProductId,
       count(impressions.ProductId) As TotalImpressions,
       count(clicks.productId) as TotalClicks
FROM ProductResults pr
ARRAY JOIN results as impressions
LEFT JOIN ProductClicks clicks on
          impressions.ProductId = clicks.ProductId
GROUP BY pr.EventDate,
         pr.DealershipId,
         pr.Vrm
ORDER BY pr.EventDate Desc;

谢谢

【问题讨论】:

  • 问题是什么?
  • 必需的输出——用于什么输入?
  • @DennyCrane 抱歉,目前尚不清楚 - 我只是想知道如何计算搜索结果中返回的产品数量以及每天点击它们的次数,而不是打扰哪个搜索点击来自我只需要显示产品 1 在搜索中被返回 30 次并在任何一天点击两次

标签: clickhouse


【解决方案1】:

似乎需要为 clicks.productId 的计数聚合函数添加谓词或使用 uniqIf-function:

SELECT pr.EventDate,
       impressions.ProductId,
       count(impressions.ProductId) As TotalImpressions,
       countIf(clicks.productId != 0) as TotalClicks1 /* <-- v.1 */
       uniqIf(clicks.productId, clicks.productId != 0) as TotalClicks2 /* <-- v.2 */
..

【讨论】:

    【解决方案2】:
     SELECT pr.EventDate,
            impressions.ProductId,
            count() As TotalImpressions,
            clicks.TotalClicks
     FROM ProductResults pr ARRAY JOIN results as impressions
     LEFT JOIN    (select ProductId, count(clicks.productId) TotalClicks 
                   from  ProductClicks group by ProductId 
                  ) clicks on impressions.ProductId = clicks.ProductId
     GROUP BY pr.EventDate, impressions.ProductId
     ORDER BY pr.EventDate Desc;
    

    【讨论】:

      猜你喜欢
      • 2013-12-05
      • 2019-05-19
      • 1970-01-01
      • 2011-01-12
      • 2016-12-18
      • 2011-01-14
      • 2014-08-08
      • 2015-05-31
      • 1970-01-01
      相关资源
      最近更新 更多