2017-09-06 200 views
-1

有人可以向我解釋爲什麼我的工作不正常嗎?SQL where子句子查詢

select distinct campaignid 
from(
select 
day, 
campaignid, 
campaignname, 
sum(campaign_impressions) as impressions, 
sum(installs) as installs, 
sum(revenue) as revenue 
from bi.mobile_united_net t 
where (campaignid in (select TOP 14 distinct campaignid 
          from bi.mobile_united_net      
          where campaignid <> '3600961' 
          group by 1 
          order by sum(campaign_impressions) desc 
          ) 
     or campaignid = '1433407') 

group by 1,2,3 
order by 1,2); 

因爲我希望只獲得15個廣告系列,但獲得408個廣告系列。

enter image description here

感謝, 陳

+0

你能解釋更多嗎?第一個查詢似乎很好 –

+0

它工作不正常嗎?你爲什麼不給我們更多的信息,你是否收到錯誤信息,這是什麼,你期望什麼? – HoneyBadger

+0

子查詢必須有一個別名 – Khalil

回答

0

這是由1,2,3day,campaignid,campaignname,(即每一天,你的15個活動的一個發生在)分組,以便你會得到一個行白天和運動的每個組合

爲了讓只有15行,你需要從你的選擇,並通過組對組由「活動,清除「天」,campaignname`只有

select distinct campaignid 
from(
select 
campaignid, 
campaignname, 
sum(campaign_impressions) as impressions, 
sum(installs) as installs, 
sum(revenue) as revenue 
from bi.mobile_united_net t 
where (campaignid in (select TOP 14 distinct campaignid 
          from bi.mobile_united_net      
          where campaignid <> '3600961' 
          group by 1 
          order by sum(campaign_impressions) desc 
          ) 
     or campaignid = '1433407') 

group by campaignid,campaignname  
order by 1,2); 

我還建議使用列名稱而不是數字進行分組和排序,它使事情更容易閱讀和維護。

+0

不幸的是,它仍然沒有工作,看看輸出(圖片附加)。你可以看到有4408行 –

+0

試着把它分解下來,如果你只是運行內部查詢(TOP 14),然後下一個出來等等,會發生什麼等。 – JeffUK

+0

Oooh,在子查詢的末尾嘗試限制14而不是頂部14? – JeffUK