如何解决具有左联接和计算计数的Clickhouse阵列联接
我有一个SearchImpressions表,该表具有一个嵌套的类型列,其中包含在搜索过程中显示的Product_Id和Price数组。我还有一个表格,其中包含用户单击搜索结果之一时的详细信息。
问题:
产品搜索结果表
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;
谢谢
解决方法
看来需要为 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 */
..
,
SELECT pr.EventDate,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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。