返回顶部
首页 > 资讯 > 数据库 >Mysql区间分组查询的实现方式
  • 469
分享到

Mysql区间分组查询的实现方式

Mysql区间分组Mysql查询Mysql区间分组查询 2022-11-13 18:11:32 469人浏览 薄情痞子
摘要

目录Mysql区间分组查询场景第一想法一番百度之后另一种解决办法按区间分组查询、获取各区间的总数数据表如下需求mysql区间分组查询 场景 一张用户表(user),有用户id(id)

mysql区间分组查询

场景

一张用户表(user),有用户id(id)、余额(balance)等字段,要求展示 余额在某个区间内的人数

​ 区间有0-1万,1-10万,10-50万,50-100万,100万+,

下面是模拟数据:

用户id        余额
1            100    
2            200    
3            3223
4            100001
5            100025
6            512123
7            565656
8            10000001

统计结果应该如下所示:

余额          人数
0-1万        1
1-10万        2
10-50万        1
50-100万    2
100万+        1

第一想法

select 
    count(if(balance between 0 and 10000, id , null ) ) as "0-1万",
    count(if(balance between 10001 and 100000, id , null ) ) as "1-10万",
    count(if(balance between 100001 and 500000, id , null ) ) as "10-50万",
    count(if(balance between 500001 and 1000000, id , null ) ) as "50-100万",
    count(if(balance > 1000000, id , null ) ) as "100万+"
from user ;

这样可以查出来每个范围对应的人数,但是不尽人意,而且写的很麻烦…

一番百度之后

select interval(balance,0,10000,100000,500000,1000000) as i ,count(*) 
from user group by i;

select elt(interval(balance,0,10000,100000,500000,1000000),"0-1万","1-10万","10-50万","50-100万","100万+") as region ,count(*) 
from user group by region;

利用了mysql提供的interval和elt函数实现了效果

interval

interval(N,N1,N2,N3) ,比较列表中的N值,该函数如果N<N1返回0,如果N<N2返回1,如果N<N3返回2 等等。

elt

elt(n,str1,str2,str3,…) 如果n=1,则返回str1,如果n=2,则返回str2,依次类推

两个函数结合,再加上group,实现了这种范围分组的效果

另一种解决办法

由于使用的是类似mysql语句查询的一个分析数据库,它不支持elt函数和interval函数(抄mysql没有抄全…)

实现这种范围分组的场景,可以通过创建中间表的形式实现。然后通过用户表去join

创建如下一个中间表:有下限、上限和区间名三个字段

lower        upper        region
0            10000        0-1万
10001        100000        1-10万
100001        500000        10-50万
500001        1000000        50-100万
1000000        2000000000    100万+

用户表就可以通过余额字段去join这个表

select region,count(*)
from user 
left join tmp on user.balance between tmp.lower and tmp.upper
group by region 

就可以实现范围分组的效果

相比之前两种,感觉这个想法很有趣(同事教的)。

按区间分组查询、获取各区间的总数

数据表如下

需求

tick_count是次数、user_account是用户标识,user_account可能重复,统计0次,1-3次、4-6次、7-9次、10-12次、13次以上,这几个区间各有多少个用户数

select case
         when tc.stick_count = 0 then
          '0'
         when tc.stick_count > 0 and tc.stick_count <= 3 then
          '1to3'
         when tc.stick_count > 3 and tc.stick_count<= 6 then
          '4to6'
         when tc.stick_count > 6 and tc.stick_count <= 9 then
          '7to9'
	     when tc.stick_count > 9 and tc.stick_count <= 12 then
          '10to12'
	     when tc.stick_count >  13 then
          'more13'
       end stickLevel,
       COUNT(DISTINCT user_account) total
  from t_stick_detail_hourly tc 
 group by case
         when tc.stick_count = 0 then
          '0'
         when tc.stick_count > 0 and tc.stick_count <= 3 then
          '1to3'
         when tc.stick_count > 3 and tc.stick_count<= 6 then
          '4to6'
         when tc.stick_count > 6 and tc.stick_count <= 9 then
          '7to9'
		 when tc.stick_count > 9 and tc.stick_count <= 12 then
          '10to12'
	     when tc.stick_count > 13 then
          'more13'
       end

运行结果

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

您可能感兴趣的文档:

--结束END--

本文标题: Mysql区间分组查询的实现方式

本文链接: https://lsjlt.com/news/169187.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Mysql区间分组查询的实现方式
    目录Mysql区间分组查询场景第一想法一番百度之后另一种解决办法按区间分组查询、获取各区间的总数数据表如下需求Mysql区间分组查询 场景 一张用户表(user),有用户id(id)...
    99+
    2022-11-13
    Mysql区间分组 Mysql查询 Mysql区间分组查询
  • mysql中实现按时间分组查询的方法
    这篇文章主要介绍mysql中实现按时间分组查询的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql按时间分组查询的方法:使用函数【DATE_FORMAT(date,form...
    99+
    2024-04-02
  • MySQL的分页查询方式
    这篇文章主要介绍“MySQL的分页查询方式”,在日常操作中,相信很多人在MySQL的分页查询方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL的分页查询方式”的疑惑...
    99+
    2024-04-02
  • MySQL实现分页查询的方法
    这篇文章主要介绍MySQL实现分页查询的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL中实现分页查询:在数据量较小的情况下可使用limit查询来实现分页查询,在数据量大...
    99+
    2024-04-02
  • MySQL中时间区间查询的优化方法
    MySQL中时间区间查询是在实际项目中经常遇到的性能优化问题之一,合理的时间区间查询可以极大地提高查询效率。本文将介绍一些优化方法,并结合具体的代码示例来演示。 使用索引 在进行时间区...
    99+
    2024-03-01
    mysql优化 时间优化 时间区间查询
  • MySQL分组查询数据怎么实现
    要在MySQL中实现分组查询数据,可以使用GROUP BY子句来分组查询结果。以下是一个简单的示例: 假设我们有一个名为studen...
    99+
    2024-04-02
  • mysql按照时间分组查询的语句
    mysql 按年、月、周、日分组查询 1.按照年份分组查询 SELECT DATE_FORMAT(t.bill_time,'%Y') month_time,sum(t.p...
    99+
    2024-04-02
  • 使用mongoTemplate实现多条件加分组查询方式
    目录mongoTemplate实现多条件查询mongoTemplate分组查询的坑先来一个常见的错误信息: Due to limitations of the com.mongodb...
    99+
    2024-04-02
  • MySQL 分组查询的优化方法
    MySQL 在处理 GROUP BY 和 DISTINCT 查询的方式在大多数情况下类似,事实上,在优化过程中有时候会把在这两种方式中转换。两类查询都能够从索引中受益,通常,这也是优化这两种查询最为重要的方式。 ...
    99+
    2022-05-20
    MySQL 分组查询 MySQL 分组查询优化
  • mysql 表分区的方式和实现
    1. mysql 表的分区方式 MySQL 提供了多种分区方式,以下是常见的几种分区方式: 范围分区(RANGE):按照某个连续的范围将数据分区,例如按照订单日期进行分区。在创建表时,可以使用 PARTITION BY RANGE 子句来设...
    99+
    2023-08-17
    mysql mysql 分区的方式 mysql 分区的实现样例
  • Mysql四种分区方式及组合分区落地怎么实现
    这篇文章主要介绍“Mysql四种分区方式及组合分区落地怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mysql四种分区方式及组合分区落地怎么实现”文章能帮助大家解决问题。一、问题1.分区是什...
    99+
    2023-06-30
  • sqlServer实现分页查询的三种方式
    目录一、offset /fetch next关键字二、利用max(主键)三、利用row_number关键字总结sqlServer的分页查询和mysql语句不一样,有三种实现方式。分别是:offset /fetch nex...
    99+
    2023-03-02
    sqlserver的分页查询 sqlserver分页sql语句 server数据库分页查询
  • mysql按日期分组查询怎么实现
    要实现按日期分组查询,可以使用MySQL的DATE_FORMAT函数对日期进行格式化,并将其作为分组的依据。 举例来说,假设有一张名...
    99+
    2024-04-02
  • mysql按月份分组查询的方法
    小编给大家分享一下mysql按月份分组查询的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql按月份分组查询的方法:根据format字符串格式化date值,语法为【DATE_FORM...
    99+
    2024-04-02
  • MySQL分组查询的方法是什么
    MySQL中使用GROUP BY子句来实现分组查询。通过在SELECT语句中添加GROUP BY子句并指定需要分组的列,可以...
    99+
    2024-04-20
    MySQL
  • mysql实现分页查询功能的方法
    小编给大家分享一下mysql实现分页查询功能的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql分页查询的方法:1、用具体字段代替【*】;2、先查寻索引;3、使用【between …...
    99+
    2024-04-02
  • MySQL连表查询分组去重的实现示例
    目录业务逻辑数据表结构查询逻辑SQL脚本脚本说明业务逻辑 通过多种渠道将小程序的活动页链接发布出去,比如通过多多种短信附带链接( channel 就记为 sms1,sms2,sms3 ),或者海报上面贴微信小程序的...
    99+
    2022-05-24
    MySQL连表查询 MySQL分组去重 mysql 连表分组查询
  • Mysql四种分区方式以及组合分区落地实现详解
    目录一、问题1.分区是什么2.Mysql为什么要使用分区3.Mysql中分区原理4.Mysql中分区局限二、分区落地实现1.Range分区2.Hash分区3.Key分区4.Mysql...
    99+
    2024-04-02
  • Mysql分组查询每组最新一条数据的三种实现方法
    目录前言注意事项准备SQL错误原因方法一方法二(适用于自增ID和创建时间排序一致)方法三(适用于自增ID和创建时间排序一致)总结MAX()函数和MIN()这一类函数和GROUP BY配合使用存在问题前言 在写报表功能时遇...
    99+
    2023-01-12
    mysql分组查询每组最新数据怎么查 MySQL分组查询 mysql分组取取每组第一
  • mysql中怎么实现查询区分大小写
    这期内容当中小编将会给大家带来有关mysql中怎么实现查询区分大小写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。查询区分大小写的问题 mysql查询默认是不区...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作