900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > mysql分组后按条件统计_Mysql-分组按条件统计

mysql分组后按条件统计_Mysql-分组按条件统计

时间:2019-03-20 22:14:53

相关推荐

mysql分组后按条件统计_Mysql-分组按条件统计

现在有数据表,保存消息信息,包括消息类型,阅读状态,推送时间等字段,如附件图片。需求是要根据消息类型分组,找出每组最后推送时间,最后推送的消息标题,以及是否有未读信息,未读信息的数量等内容。

获取每种消息类型下最后一条消息pusher_time和msg_title我使用了先将消息倒序排列,外层sql根据消息类型进行分组的方法。统计当前消息类型下是否有未读消息,我是先将所有消息的is_read状态concat,然后判断concat的字符串中是否包含有0(is_read 未读状态),如果有说明这种类型下有未读的消息。统计每种类型下的未读消息数量了使用了COUNT(CASE WHEN t.is_read = 0 THEN t.msg_type END) AS unReadMsgCount,其中msg_type是消息类型,根据此字段分组。

最终sql:

SELECT t.* ,

CASE FIND_IN_SET('0', GROUP_CONCAT(is_read)) WHEN 0 THEN 0 ELSE 1 END AS hasUnRead,

COUNT(CASE WHEN t.is_read = 0 THEN t.msg_type END) AS unReadMsgCount

FROM (

SELECT id, push_time, msg_type, is_read, msg_title FROM table_name WHERE user_id = *****

ORDER BY push_time DESC ) t

GROUP BY msg_type ORDER BY msg_type ASC

Refer:

1、/veloi/article/details/62238155

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。