2013-09-26 59 views
0

这里是我在这里复制的代码的一部分。我被卡住的逻辑是我想要计算除天空运动以外的所有频道的点击量(其他电视与体裁描述运动) 我不认为我或逻辑在这里工作。或逻辑续集

count(case when CHANNEL_NAME NOT IN('Sky Sports 3' 
,'Sky Sports 1' 
,'Sky Sports 2' 
,'Sky Sports 4' 
,'Sky Sports F1' 
,'Sky Sports Ashes' 
,'Sky Sports Interactive Lo 7' 
,'Sky Sports Interactive Lo 1' 
,'Sky Sports Ineractive Hi 5' 
,'Sky Sports Ineractive Hi 1' 
,'Sky Sports Ineractive Hi 4' 
,'Sky Sports Interactive Lo 9' 
) or (channel_name <> 'Other TV' and genre_description <> 'Sports') then 1 end) 

回答

1

您使用的or是不准确的位置。例如,如果名称为"Other TV",则它将与第一条件(名称不是"sky sports something")相匹配并将包含在内。您应该使用and,因为您希望自己的频道符合所有条件。

1
sum(case when CHANNEL_NAME LIKE 'Sky Sports%' 
       OR (channel_name = 'Other TV' AND genre_description = 'Sports') 
      then 0 
      else 1 
     end) 
+0

我想你应该在条件'channel_name <>'其他电视'和genre_description <>'Sports''上插入括号{ –

+0

@Nadeem_MK:实际上它们不是必需的,因为'和'绑定比'或'更强。但为了可读性 - 是的。 –

+0

@juergend在计数函数中,如果我们同时使用0和1,那么它计数所有!它必须是0结束或1结束,因为它只计算我们过滤的结果 – SouravD