簡體   English   中英

在某些日期缺少數據時聚合數據的問題

[英]Issue with aggregating data when data missing on certain dates

我如何編輯以下 SQL 查詢以獲得每天和每個變體的結果,其中我有一個 A/B/控制測試:

SELECT 
    t.day, t.type AS variant_type, t.clicks, 
    t2.type AS control, t2.control_clicks
FROM 
    table1 t
LEFT JOIN 
    table1 t2 ON t.day = t2.day
              AND t2.type = 'control'

目前,只有在 from 子句中有給定日期的數據時,數據才會通過。 這會導致在進一步聚合數據時出現問題。

當前結果:

變體 variant_clicks 控制 控制點擊
2020-01-01 A 1000 控制 1500
2020-01-01 b 2000 控制 1500
2020-01-01 控制 1500 控制 1500
2020-01-02 控制 1700 控制 1700

期望的結果:

變體 variant_clicks 控制 控制點擊
2020-01-01 A 1000 控制 1500
2020-01-01 b 2000 控制 1500
2020-01-01 控制 1500 控制 1500
2020-01-02 A 0 控制 1700
2020-01-02 b 0 控制 1700
2020-01-02 控制 1700 控制 1700

任何幫助將不勝感激!

您可以使用cross join生成行,然后使用left join引入現有數據:

SELECT d.day, v.type as variant_type,
       COALESCE(t.clicks, 0) as clicks, 'control' as control,
       MAX(t.clicks) FILTER (WHERE type = 'control') OVER (PARTITOIN BY d.day) as control_clicks
FROM (SELECT DISTINCT day FROM table1) d CROSS JOIN
     (VALUES ('a', 'b', 'control')) v(type) LEFT JOIN
     table1 t
     ON t.day = d.day AND t.type = v.type;

注意:這使用 window 函數來獲取控件點擊而不是單獨的聚合和join

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM