Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL - How to merge rows based on user id and make SUM

Tags:

sql

php

mysql

I have written following MySQL select query:

SELECT cs.id, cs.campaign_id, cs.instagram_id, cs.media_id, cs.has_tag, cs.comments_count, cs.likes_count, DATE(cs.created_date) AS created_date, sl.username, (cs.comments_count + cs.likes_count) AS total_comments_likes
FROM campaign_statistic AS cs 
LEFT JOIN social_login AS sl ON sl.social_id = cs.instagram_id
WHERE instagram_id IN (481959735, 12095962) 
AND has_tag = 'sometag' 
ORDER BY created_date ASC

And getting this result:

enter image description here

Now you can see there are three entry from 2015-12-10:

id  campaign_id     instagram_id    media_id                         has_tag     comments_count     likes_count     created_date    username    total_comments_likes
66  50              481959735       1110926795500814980_481959735    sometag     1                  51              2015-12-10      myname      52
74  50              12095962        1102652300222991882_12095962     sometag     0                  16              2015-12-10      myname      16
77  50              481959735       1096415071007540220_481959735    sometag     0                  18              2015-12-10      myname      18

You can see 481959735 instagram id has two records for that day(2015-12-10). Now I want SUM comments_count & likes_count of 481959735 and merge in on row.

I want this output:

id  campaign_id     instagram_id    media_id                         has_tag     comments_count     likes_count     created_date    username    total_comments_likes
66  50              481959735       1110926795500814980_481959735    sometag     1                  69              2015-12-10      myname      70
74  50              12095962        1102652300222991882_12095962     sometag     0                  16              2015-12-10      myname      16

Any idea how to do this with mysql query.

Thanks

like image 264
Mr.Happy Avatar asked Feb 04 '26 18:02

Mr.Happy


1 Answers

USE Group By clause and SUM function for SUM

Query will be

SELECT cs.campaign_id, cs.instagram_id,Sum(cs.comments_count), SUM(cs.likes_count),Sum(cs.comments_count) +SUM(cs.likes_count) AS total_comments_likes FROM campaign_statistic AS cs LEFT JOIN social_login AS sl ON sl.social_id = cs.instagram_id WHERE cs.instagram_id IN (481959735, 12095962) AND has_tag = 'sometag' group by cs.campaign_id, cs.instagram_id ORDER BY created_date ASC

like image 168
Abdul Hannan Ijaz Avatar answered Feb 06 '26 07:02

Abdul Hannan Ijaz