2014-10-21 52 views
3

我正在嘗試計算新列的展示次數值,它等於(sum_retweet和sum_reply)乘以列followers_count中的值的總和。所以對於第一行,它將是:(2 + 1)* 812,但條件是sum_retweet和sum_reply的總和必須大於零。如果總和等於零,那麼展示次數將僅等於followers_count。條件下的sql乘法

account_id, date,  user_screenname, sum_retweet, sum_reply, followers_count, Reach 
    '9',   '2008-06-11',  'A',  '2',   '1',  '812',   '1624' 
    '9',   '2008-06-12',  'B',  '0',   '1',  '813',   '813' 

這裏是我當前的代碼:

CREATE VIEW `tweet_sum` AS 
    select `tweets`.`account_id` AS `account_id`, 
      `tweets`.`user_screenname` AS `user_screenname`, 
      CAST(`tweets`.`datetime` as date) AS `period`, 
      MAX(`tweets`.`followers_count`) AS `followers_count`, 
      SUM(`tweets`.`is_reply`) AS `sum_reply`, 
      SUM(`tweets`.`is_retweet`) AS `sum_retweet`, 
      MAX(`tweets`.`followers_count`) * ((SUM(`tweets`.`is_reply`) > 0) + (SUM(`tweets`.`is_retweet`) > 0)) as reach 
    from `tweets` 
    group by cast(`tweets`.`datetime` as date), tweets.username; 

如何添加計算在印象列?

回答

2

採用case語句,爲此:

case when SUM(`tweets`.`is_reply`) + SUM(`tweets`.`is_retweet`) > 0 
    then (SUM(`tweets`.`is_reply`) + SUM(`tweets`.`is_retweet`)) 
      * `tweets`.`followers_count` 
    else `tweets`.`followers_count` END as newColumn 
1

這將做到這一點在SQL,但是這句法可能無法在MySQL的工作(不知道):

CASE WHEN (Sum_Retweet + Sum_Reply) > 0 
    THEN (Sum_Retweet + Sum_Reply) * followers_count 
    ELSE followers_count 
END 

字段名稱需要更改爲您的實際字段名稱。