Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

sql multiplication on condition

Tags:

sql

mysql

i am trying to calculate the values for a new column impressions which is equal to the sum of ( sum_retweet and sum_reply ) multiply by the value in the column followers_count. so for the first row it would be : (2+1)*812 but on condition that the total sum of sum_retweet and sum_reply must be greater than zero. If the sum is equal to zero than impressions will = to just the followers_count.

  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'

Here is my current code:

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;

HOw do i add the calculations for the impressions column in?

like image 344
jxn Avatar asked Jul 23 '26 05:07

jxn


1 Answers

Use a case statement for this:

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
like image 171
crthompson Avatar answered Jul 25 '26 19:07

crthompson