2015-08-21 120 views
0

我有一個表叫mixpanel與folliowing列SQL查詢涉及加入

merchant_name 
date 
event_type (2 types 'Loaded a page', 'Clicked') 

我也有以下的列

merchant_name 
gw_clicks 
gw_impressions 
device (Can be PC, Mobile or Tablet) 
date 

我所試圖做的是一臺名爲google_webmaster表根據merchant_name加入這兩個表並試圖獲得商家名稱,總和(加載頁面),總和(點擊),gw_impressions,gw_clicks

這是我目前的查詢

SELECT 
a.merchant_name, 
b.gw_impressions, 
b.gw_clicks, 
SUM(CASE WHEN event_type = 'Loaded a Page' then 1 else 0 end) mxp_impressions, 
SUM(CASE WHEN event_type = 'Clicked' then 1  else 0 end) mxp_clicks 
from mixpanel a 
inner join google_webmaster b on a.merchant_name = b.merchant_name 
where a.time >= '2015-07-15 00:00:00' AND a.time <= '2015-07-15 23:59:59' and b.date = '2015-07-15' 
group by 1,2,3 

該查詢的問題是,它將每個商家記錄的3行從webmaster表連接到mixpanel表。這是因爲網站站長表中的每臺PC,移動設備,平板電腦都有3行。

我怎樣才能在加入gw_impressions加入(對於每個商家)1記錄。 gw_clicks適用於PC,手機和平板電腦。

+0

某些數據輸入和期望結果將有所幫助。你可以提供一些[**小提琴**](http://sqlfiddle.com/#!9/90e4d/5) –

+0

也許創建並鏈接到一個簡單的例子,用示例數據使用http://sqlfiddle.com/所以其他人可以更好地看到你的意思 –

回答

0
SELECT 
a.merchant_name, 
b.device, 
SUM(b.gw_impressions + b.gw_clicks), 
SUM(CASE WHEN event_type = 'Loaded a Page' then 1 else 0 end) mxp_impressions, 
SUM(CASE WHEN event_type = 'Clicked' then 1 else 0 end) mxp_clicks 
from mixpanel a 
inner join google_webmaster b on a.merchant_name = b.merchant_name 
where a.time >= '2015-07-15 00:00:00' 
AND a.time <= '2015-07-15 23:59:59' 
and b.date = '2015-07-15' 
group by 1,2 

新增device查詢並總結出gw_impressions,gw_clicks。