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

获取每种消息类型下最后一条消息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、https://blog.csdn.net/veloi/article/details/62238155

mysql分组后按条件统计_Mysql-分组按条件统计相关推荐

  1. mysql每组随机一条_MySql分组后随机获取每组一条数据的操作

    思路:先随机排序然后再分组就好了. 1.创建表: CREATE TABLE `xdx_test` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAUL ...

  2. mysql 每组取一条_MySql分组后随机获取每组一条数据的操作

    思路:先随机排序然后再分组就好了. 1.创建表: CREATE TABLE `xdx_test` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAUL ...

  3. 分组 查出id最大的_MySQL分组top N问题疑点

    2019年6月12日更新:MySQL 8已经支持row_number.rank.dense_rank.over函数,完美实现分组排序功能. # 使用row_number排序,注意排名没有并列 sele ...

  4. mysql复杂条件判断_MySQL复杂where条件分析

    在<MySQL 常见语句加锁分析>一文中,我们详细讲解了 SQL 语句的加锁原理并具体分析了大部分的简单 SQL 语句,但是实际业务场景中 SQL 语句往往及其复杂,包含多个条件,此时就需 ...

  5. mysql分组后去重复数据_mysql去掉重复数据只保留一条,以及取分组后的一条数据...

    最近有一个需求是要我在用户所有发过的短视频中找到每一个用户最新发送的一条短视频网上找了一下感觉挺好用的所以就记录下来 SELECT a.createTime,a.userId FROM short_v ...

  6. mysql分组取日期最大的记录_mysql 分组 group by, 排序 取每条记录中,时间最大

    mysql教程 分组 group by, 排序 取每条记录中,时间最大的一条记录 select a.* from test a, (select aid, max(day) max_day from ...

  7. MySQL slowlog 统计_mysql slow log 简单统计

    众所周知,mysql slow log中很多sql语句结构和对象是相同,只是其中变量不一样,对于这样的sql,我们完全可以将其归为一类,统计其执行次数.执行时间平均值等参数,而pt-query-dig ...

  8. mysql怎么对月份进行统计_MySQL如何按月份统计数据详解(转)

    这篇文章主要对MySQL按月份统计数据介绍:表finance有俩个字段如下date datemoney double(15,2)下面需要对表finance的2010年财务数据,按月进行统计 selec ...

  9. mysql不同的类的个数_Mysql数据库-SQL优化-统计某种类型的个数

    有时我们想统计某种类型有多少个,会用这个SQL.全表扫描之余,还要filesort,耗时1.34秒. mysql> select country,count(*) from t1 group b ...

  10. mysql的条件语句_MySQL的简单条件判断语句

    在mysql中条件判断语句常用于数据转换,基于现有数据创建新的数据列,使用场景还是比较多. 基础样式: case when`条件`then`结果` else`默认结果` end 在同一条判断语句中可以 ...

最新文章

  1. 从理论到工具 - 带你全面了解自动化测试框架
  2. VSCode中屏蔽文件files.exclude和屏蔽文件搜索search.exclude
  3. windows和linux互传文件,用户配置文件和密码配置文件,用户和组管理
  4. 一本介绍C指针的书--指针和结构体5.1
  5. 【Kali 树莓派版学习笔记】安装系统和VNC服务
  6. POJ2083 ZOJ3507 Fractal题解
  7. 关于ADO之AddNew,UPdate与Identity列
  8. python中if语句的实例_如何在Python中的if语句中调用某个函数?
  9. 分析137份大数据简历-统计技术名词词频
  10. c语言学籍信息录入,C语言程序报告 学生学籍信息管理系统.doc
  11. 聚石塔,御城河接入,御河城安全整改demo
  12. MarkDown 标题居中
  13. linux 设置u盘为只读模式,U盘如何设置为只读模式
  14. vlan的三种划分方式、pvlan和网段(子网)的关系
  15. C语言大作业小学生数学检测系统,小学数学测试系统C语言设计.doc
  16. 谷歌浏览器共存,一个用户可拥有多个版本谷歌浏览器
  17. matlab实验八,matlab实验八
  18. 牛客网试题+答案分析+大牛面试经验(1)
  19. 苹果邮箱imap服务器,IOS系统IMAP邮箱设置
  20. html逐帧动画,CSS秘密花园: 逐帧动画

热门文章

  1. Linux 路由的添加删除-ip route
  2. html调用js文件中的类,html中import js文件并调用报错
  3. html文字水纹特效,使用CSS3 clip-path实现的标题文本水纹波动动画特效
  4. CF 1716 C. Robot in a Hallway 思维 2000
  5. 手写 bind 函数
  6. 史上最全MySQL基本操作(这一篇就够用了!!!)
  7. wordpress主题Vieu主题V4.5
  8. 梦学谷会员管理系统(二)
  9. 我还是一个人.....
  10. oracle wip 拆解工单 操作_ORACLE成本管理中WIP处理对成本计算的影响