select t.id,
t.title,
t.entry_form_id,
GREATEST(MAX(t.gmt_create), MAX(t.gmt_modified)) AS shareReadTime,
COALESCE(SUM(IF(t.rowNum = 1, t.share_num, 0)), 0) AS shareNum,
count(DISTINCT t.user_id) as readNum,
count(DISTINCT if(t.nickname is not null, t.user_id, null)) as clueNum,
COALESCE(SUM(IF(t.rowNum2 = 1, t.view_num, 0)), 0) AS sumViewNum
from (select t1.id,
t1.title,
t1.entry_form_id,
t2.gmt_create,
t3.gmt_modified,
t3.share_num,
ROW_NUMBER() OVER (PARTITION BY t3.`staff_id`,t3.`article_id` ORDER BY t3.id ) as rowNum,
t2.view_num,
t2.user_id,
ROW_NUMBER() OVER (PARTITION BY t2.`user_id`,t2.`staff_id`,t2.`article_id`,t2.`day` ORDER BY t2.id ) as rowNum2,
t4.nickname
from article t1
left join user_article_view_log t2
on t1.id = t2.article_id
left join staff_share_log t3
on t1.id = t3.article_id
left join user_info t4
on t2.user_id = t4.id
where t3.staff_id = #{staffId}) t
GROUP BY t.id