mysql 查询最多的_mysql查询——查找订单最多的客户
订单表(Order)中包含的订单明细数据如下图,其中OrderId表示订单编号,CustomerId表示客户编号,OrderDate表示下订单的日期,现需要编写一个查询语句,查询订单表(Order)中订单最多的客户编号和订单量。
方法一:在having中使用子查询
第一步,对客户编号(CustomerId)进行分组计数,计算出各个客户的订单量。
select CustomerId,count(*) as OrderNumber
from Orders
group by CustomerId;
第二步,找出最大的订单量
select max(OrderNumber)
from(
select CustomerId,count(*) as OrderNumber
from Orders o1
group by o1.CustomerId
)o;
第三步,用各个客户的订单量与最大订单量比较,找出订单最多的客户编号和订单量。
select o2.CustomerId,count(*) as OQ
from Orders o2
group by o2.CustomerId
having count(*)=(
select max(OrderNumber)
from(
select CustomerId,count(*) as OrderNumber
from Orders o1
group by o1.CustomerId
)o
);
方法二:使用窗口函rank()(此方法mysql8.0及以上版本可用)
第一步,对客户编号(CustomerId)进行分组计数,计算出各个客户的订单量。
select CustomerId,count(*) as OrderNumber
from Orders
group by CustomerId;
第二步:使用窗口函数rank()对订单量进行排名。
select CustomerId,OrderNumber,rank()over(order by OrderNumber desc)Rnk
from(
select CustomerId,count(*) as OrderNumber
from Orders
group by CustomerId
)o;
第三步,筛选排名第一的数据即为订单最多的客户编号和订单量。
select CustomerId,OrderNumber as OQ
from(
select CustomerId,OrderNumber ,rank()over(order by OrderNumber desc)Rnk
from(
select CustomerId,count(*) as OrderNumber
from Orders
group by CustomerId
)o
)o2
where Rnk=1;
方法三:使用自定义变量
方法二中第二步对订单量进行排名也可使用自定义变量的方式实现,因此最终代码也可编写为:
select CustomerId,OrderNumber as OQ
from(
select CustomerId,OrderNumber ,@a:=if(@pre=OrderNumber,@a,@a+1)Rnk,@pre:=OrderNumber
from(
select CustomerId,count(*) as OrderNumber
from Orders
group by CustomerId
)o,(select @a:=0,@pre:=null)p
order by OrderNumber desc
)o2
where Rnk=1
order by CustomerId;
您看此文用
·
秒,转发只需1秒呦~
既然在看了,就点一下吧!!
mysql 查询最多的_mysql查询——查找订单最多的客户相关推荐
- mysql 查询出现次数最多的_MySQL查询重复出现次数最多的记录
MySQL查询的方法很多,下面为您介绍的MySQL查询语句用于实现查询重复出现次数最多的记录,对于学习MySQL查询有很好的帮助作用. SELECT keyword, count( * ) AS co ...
- mysql查询数据教程_MySQL 查询数据
sql 语句的关联查询 左关联: left join ... on ... 右关联: right join... on ... 格式: select 字段 from 表1 left join 表2 o ...
- MySQL查询的方法_MYSQL 查询方法
mysql表格查询方法: 查询: 1.简单查询 select * from Info --查所有数据 select Code,Name from Info --查指定列的数据 select Code ...
- mysql查询sql计划_MySQL 查询计划 总结
(一)查询计划 释义 查询计划: SQL语句是怎样进行执行的 使用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理你的 SQL 语句的.分析你的查询语句或 ...
- mysql查询解析过程_MySQL查询执行过程详解
查询是用户通过设置某些查询条件,从表或其他查询中选取全部或者部分数据,以表的形式显示数据供用户浏览.查询是一个独立的.功能强大的.具有计算功能和条件检索功能的数据库对象.MySQL数据库中,MySQL ...
- mysql 一周一月_mysql查询当天、本周,本月,上一个月的数据
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...
- mysql 查询所有鎖_mysql查询锁
查询锁表进程: 1.查询是否锁表 show OPEN TABLES where In_use > 0; 2.查询进程 show processlist 查询到相对应的进程===然后 kill ...
- mysql函数循环查询的数据_MySQL 查询树结构、循环查询、查看函数、视图、存储过程...
MySQL经常会用到查询树结构数据,这里专门收集整了一篇. 构建函数 构建树查询函数:查询父级节点函数 --在mysql中完成节点下的所有节点或节点上的所有父节点的查询--根据传入id查询所有父节点的 ...
- mysql 获取倒数第二_MySQL查询倒数第二条记录实现方法
有时候会用到查询倒数第二条记录复制代码 代码如下:last=HolderChangeHistory.find_by_sql ([" SELECT * FROM h ...
- mysql查询语句 变量_mysql查询语句中用户变量的使用
先上代码吧 SELECT `notice`.`id` , `notice`.`fid` , `notice`.`has_read` , `notice`.`notice_time` , `notice ...
最新文章
- 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate...
- 只需单击三次,让中文GPT-2为你生成定制故事
- Java存储过程调用CallableStatement
- 无线鼠标可以强制配对_赛睿Rival 3 Wireless游戏鼠标评测:无限全能
- echart 数据点可以加链接吗_地理可视化就这么简单、酷炫,蚂蚁金服AntV 空间数据可视化引擎 L72.0发布...
- 你看,公司状告员工不加班,居然还告赢了
- OpenJ_Bailian 4017 爬楼梯
- ora optimizer
- ubuntu samba配置
- paip.抓取网页内容--java php python
- 25条实用简洁的Python代码
- 做一个有批判性思维的程序员
- 可视化h5界面编辑器_超优秀 H5可视化制作编辑器H5DS
- 常用的几种向量运算法则
- openGL之API学习(七十)windows的opengl扩展wgl
- 关于光速不变与相对论的理解
- Vue.js学习日记03
- cm-14.1 Android系统启动过程分析(4)-init进程的启动、rc脚本解析、zygote启动、属性服务
- python爬虫疫情可视化
- 复试数据库系统概论(2)
热门文章
- AcWing 292 炮兵阵地
- Android Studio升级到3.5之后xml格式化问题
- 二维EMD_BEMDcode
- CDN:BootCDN
- odd ratio置信区间的计算,你学会了吗?
- 基于JavaEye-API实现的Gerry-聊天Dos版v1.0
- Web.15.三层架构之购物车项目02
- SLT2021: LIGHTSPEECH: LIGHTWEIGHT NON-AUTOREGRESSIVE MULTI-SPEAKER TEXT-TO-SPEECH
- 红帽RHCE考试要注意的几点
- 深度测评小程序跨端开发框架