[英]How can I count unique clicks across jobs for each category
我將歸因於不同類別的鏈接性能存儲在這樣的已sent
表中...
CREATE TABLE sent (
customer_id INT,
jobId INT,
category VARCHAR(100),
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);
我正在嘗試創建一個查詢,該查詢可以向我顯示Y軸上的customer_id,以及跨X軸的不同類別。 使這個問題復雜化的是,我只想為每個唯一的作業ID計算一次點擊。 我已經嘗試使用下面的查詢來進行查詢,但這只是一個類別。 我要搜索的類別是固定的(總共約10個),並且想知道如何以最有效的方式進行搜索。 該表可能包含數百萬條記錄。
SELECT customer_id, count(customer_id) as unique_clicks_discovery
FROM (
SELECT customer_id, jobId, COUNT(*) as discovery_clicks_unique
FROM sent
WHERE category = 'discovery'
GROUP BY customer_id, jobId
) as discovery_click_roundup
GROUP BY customer_id
編輯:這是預期的結果,請參閱小提琴以查看數據。
ACCOUNT ID | DISCOVER UNIQUE CLICKS | PURCHASE UNIQUE CLICKS
--------------------------------------------------------------------
101 | 3 | 3
102 | 1 | 1
103 | 1 | 1
104 | 1 | 2
編輯2:使用示例數據:
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 201, 'discovery');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 201, 'discovery');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 201, 'discovery');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 202, 'discovery');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 203, 'discovery');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 203, 'discovery');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 203, 'discovery');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 201, 'discovery');
INSERT INTO sent (customer_id, jobId, category) VALUES (102, 201, 'discovery');
INSERT INTO sent (customer_id, jobId, category) VALUES (102, 201, 'discovery');
INSERT INTO sent (customer_id, jobId, category) VALUES (103, 201, 'discovery');
INSERT INTO sent (customer_id, jobId, category) VALUES (103, 201, 'discovery');
INSERT INTO sent (customer_id, jobId, category) VALUES (104, 201, 'discovery');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 201, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 201, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 201, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 202, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 203, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 203, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 203, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (101, 201, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (102, 201, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (102, 201, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (103, 201, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (103, 201, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (104, 201, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (104, 201, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (104, 201, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (104, 202, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (103, 201, 'purchase');
INSERT INTO sent (customer_id, jobId, category) VALUES (103, 201, 'purchase');
DB Fiddle (包括樣本數據)
您可以在此處使用條件聚合 :
SELECT customer_id
, COUNT(DISTINCT CASE category WHEN 'discovery' THEN jobId END) AS unique_clicks_discovery
, COUNT(DISTINCT CASE category WHEN 'purchase' THEN jobId END) AS unique_clicks_purchase
FROM sent
GROUP BY customer_id;
您必須為每個類別附加一條COUNT(..)
行。
結果:
| customer_id | unique_clicks_discovery | unique_clicks_purchase |
| ----------- | ----------------------- | ---------------------- |
| 101 | 3 | 3 |
| 102 | 1 | 1 |
| 103 | 1 | 1 |
| 104 | 1 | 2 |
SELECT customer_id,
sum(case when category = 'discovery' then cnt else 0 end) discovery,
sum(case when category = 'purchase' then cnt else 0 end) purchase
FROM (
SELECT category, customer_id, COUNT(distinct jobid) cnt
FROM sent
GROUP BY category, customer_id
) t
GROUP BY customer_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.