我知道在這個問題上有很多帖子,但沒有一篇似乎適用。所以我會盡量做到儘可能描述性。我試圖創建一個對象來計算它被查看,導出和評論的次數。在我看來,首先查詢必須找到對象,然後必須從Impala DB中提取計數記錄(行)。在SQL語句中對一個對象進行多次計數
它從2個系統之一'sys_a'或'sys_b'中檢索此信息。 所以在我的半僞代碼:
select object, sum(case when action = 'viewed' and (system = 'sys_a' or 'sys_b') then 1 else 0 end) viewCount,
sum(case when action = 'exported' and (system = 'sys_a' or 'sys_b') then 1 else 0 end) exportCount,
sum(case when action = 'commented' and (system = 'sys_a' or 'sys_b') then 1 else 0 end) commentCount
from events;
不幸的是,當我有重複的,出口在我events
表,我知道我有對象,我的所有計數爲0
換句話說 - 我的目標3421AA2B已遠銷13倍,但它仍然具有0 計數我知道這是因爲,如果我做一個簡單的
select count(*)
from events
where object = '3421AA2B' and action = 'exported' and (system = 'sys_a' or system = 'sys_b');
我的計數顯示爲13.
必須添加GROUP BY目的; –
無法看到爲什麼重複記錄很重要。你不是分組,只是做一些基本的過濾。如果沒有別的,愚蠢只會增加計數,而不是零。並注意,由於您在所有sum(case語句)中執行了SAME sys_a/sys_b測試,因此您可以將sys_a/sys_b測試移到通用的where語句中。 –
增加了group by,didn沒關係,我在''系統'附近移除了大括號,現在我正在正確地獲取'objects' – jiveturkey