订单表(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查询——查找订单最多的客户相关推荐

  1. mysql 查询出现次数最多的_MySQL查询重复出现次数最多的记录

    MySQL查询的方法很多,下面为您介绍的MySQL查询语句用于实现查询重复出现次数最多的记录,对于学习MySQL查询有很好的帮助作用. SELECT keyword, count( * ) AS co ...

  2. mysql查询数据教程_MySQL 查询数据

    sql 语句的关联查询 左关联: left join ... on ... 右关联: right join... on ... 格式: select 字段 from 表1 left join 表2 o ...

  3. MySQL查询的方法_MYSQL 查询方法

    mysql表格查询方法: 查询: 1.简单查询 select * from Info --查所有数据 select Code,Name from Info --查指定列的数据 select Code ...

  4. mysql查询sql计划_MySQL 查询计划 总结

    (一)查询计划 释义 查询计划: SQL语句是怎样进行执行的 使用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理你的 SQL 语句的.分析你的查询语句或 ...

  5. mysql查询解析过程_MySQL查询执行过程详解

    查询是用户通过设置某些查询条件,从表或其他查询中选取全部或者部分数据,以表的形式显示数据供用户浏览.查询是一个独立的.功能强大的.具有计算功能和条件检索功能的数据库对象.MySQL数据库中,MySQL ...

  6. mysql 一周一月_mysql查询当天、本周,本月,上一个月的数据

    今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...

  7. mysql 查询所有鎖_mysql查询锁

    查询锁表进程: 1.查询是否锁表 show OPEN TABLES where In_use > 0; 2.查询进程 show processlist 查询到相对应的进程===然后 kill   ...

  8. mysql函数循环查询的数据_MySQL 查询树结构、循环查询、查看函数、视图、存储过程...

    MySQL经常会用到查询树结构数据,这里专门收集整了一篇. 构建函数 构建树查询函数:查询父级节点函数 --在mysql中完成节点下的所有节点或节点上的所有父节点的查询--根据传入id查询所有父节点的 ...

  9. mysql 获取倒数第二_MySQL查询倒数第二条记录实现方法

    有时候会用到查询倒数第二条记录复制代码 代码如下:last=HolderChangeHistory.find_by_sql (["               SELECT * FROM h ...

  10. mysql查询语句 变量_mysql查询语句中用户变量的使用

    先上代码吧 SELECT `notice`.`id` , `notice`.`fid` , `notice`.`has_read` , `notice`.`notice_time` , `notice ...

最新文章

  1. 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate...
  2. 只需单击三次,让中文GPT-2为你生成定制故事
  3. Java存储过程调用CallableStatement
  4. 无线鼠标可以强制配对_赛睿Rival 3 Wireless游戏鼠标评测:无限全能
  5. echart 数据点可以加链接吗_地理可视化就这么简单、酷炫,蚂蚁金服AntV 空间数据可视化引擎 L72.0发布...
  6. 你看,公司状告员工不加班,居然还告赢了
  7. OpenJ_Bailian 4017 爬楼梯
  8. ora optimizer
  9. ubuntu samba配置
  10. paip.抓取网页内容--java php python
  11. 25条实用简洁的Python代码
  12. 做一个有批判性思维的程序员
  13. 可视化h5界面编辑器_超优秀 H5可视化制作编辑器H5DS
  14. 常用的几种向量运算法则
  15. openGL之API学习(七十)windows的opengl扩展wgl
  16. 关于光速不变与相对论的理解
  17. Vue.js学习日记03
  18. cm-14.1 Android系统启动过程分析(4)-init进程的启动、rc脚本解析、zygote启动、属性服务
  19. python爬虫疫情可视化
  20. 复试数据库系统概论(2)

热门文章

  1. AcWing 292 炮兵阵地
  2. Android Studio升级到3.5之后xml格式化问题
  3. 二维EMD_BEMDcode
  4. CDN:BootCDN
  5. odd ratio置信区间的计算,你学会了吗?
  6. 基于JavaEye-API实现的Gerry-聊天Dos版v1.0
  7. Web.15.三层架构之购物车项目02
  8. SLT2021: LIGHTSPEECH: LIGHTWEIGHT NON-AUTOREGRESSIVE MULTI-SPEAKER TEXT-TO-SPEECH
  9. 红帽RHCE考试要注意的几点
  10. 深度测评小程序跨端开发框架