2017-10-11 26 views
-3

基於下面的表結構,我想對每個列的值只計算一次值。如何在SQL中對此進行聚合

Person ID Email Template Email Event 
1   A    DELIVER 
1   A    OPEN 
1   A    OPEN 
1   B    CLICK 
2   A    DELIVER 
2   A    OPEN 
3   A    DELIVER 
3   C    DELIVER 

我想要得到的電子郵件數量,發送,點擊並打開每個人。我期望爲每個人獲取這個數字不一定是模板。所有的電子郵件模板只發送給一個人,但他們可以打開並多次點擊該模板。我想不包括重複打開並點擊此聚合。

+0

當你離開表格結構而不是圖片時,可以將其格式化爲更具可讀性。你有嘗試過什麼嗎?是SQL Server,PostgreSQL還是MySQL? – Moseleyi

+0

歡迎來到SO。請花一些時間閱讀[問]。不要發佈鏈接到數據圖像。請編輯該問題。另外,你有什麼嘗試? – OldProgrammer

+0

在提出問題之前,請學習如何提問。 https://stackoverflow.com/help/how-to-ask – Eric

回答

2

這樣的事情?我不知道你的桌子叫做什麼

select t.person_id, 
sum(case when t.email_event_type = 'DELIVER' then 1 else 0) deliver_count, 
sum(case when t.email_event_type = 'OPEN' then 1 else 0) open_count, 
sum(case when t.email_event_type = 'CLICK' then 1 else 0) click_count 
from <your_table_name> t 
group by t.person_id 
相關問題