当前位置: 首页 > news >正文

Mysql分组如何使用

开源项目SDK:https://github.com/mingyang66/spring-parent
个人文档:https://mingyang66.github.io/raccoon-docs/#/

一、Mysql窗口函数over(partition by …)分组

Mysql8.0及更高版本支持窗口函数,这使得在查询结果集上执行计算变得更为简单,尤其在进行分组统计是。

以下是一个fund表,按照日期进行分组,并统计每个分组总的销售金额:

selecth.date,h.balance,sum(h.balance) over(partition by h.date) as balance,count(h.balance) over(partition by h.date) as amount
fromfund h
whereh.market_type = 'l'
order byh.date desc
  • sum(…)是一个聚合函数,用于计算总的销售金额;
  • count(…)是一个聚合函数,用于计算对应分组数量;
  • over(partition by …)指定了窗口函数的分区方式,上述示例按照date进行分区,这意味着每天的销售金额都会被单独计算,每天的销售数量将会被单独计算;

执行上述查询后将会得到一个结果集,其中每一行都包含原始销售额,以及当天对应的总的销售额、销售数量。窗口函数不会减少结果集中的行数,而是会为每一行添加额外的计算列。

row_number() 是mysql8.0新增的函数,为查询结果中的每一行分配唯一的数字,遇到分组或排序的值相同时不会跳过序号,也不会分配相同的数字:

select row_number() over(partition by h.date order by h.date desc) as num from fund

上述指定了按照date分组,会在每个分组中按照date降序排列序号从1开始标记

select row_number() over(h.date order by h.date desc) as num from fund

上述sql未指定partition by分组,则会将整个sql按照条件date进行降序排列,并标记数字序号。

rank()是mysql8.0新增的函数,为查询结果中的每一行分配一个排名,如果遇到相同的排序字段值则会分配相同的排名,下一个对应的值会跳过上一个值对应的数量排名值。

select rank() over(order by h.init_date desc) as rk from fund
二、Mysql group by语句分组

group by语句根据一个或多个列对结果集进行分组,在分组列我们可以使用count、sum、avg等函数。

语法如下:

SELECT customer_id, SUM(order_amount) AS total_amount
FROM orders
GROUP BY customer;

group by语句会减少结果的行数

相关文章:

  • GoogleDeepMind联合发布医学领域大语言模型论文技术讲解
  • GO语言 环境搭建
  • Android native层的线程分析(C++),以及堆栈打印调试
  • Solidity智能合约事件(event)
  • VS2019专业版 C#和MFC安装
  • 在Linux中查找文件命令的几种方法
  • 使用Stream实现Web应用,使用YOLOv8模型对图像进行目标检测为例。
  • Go微服务: 分布式之发送带有事务消息的示例
  • 树结构的实现
  • java多线程临界区介绍
  • 代码随想录算法训练营第五十七天|1143.最长公共子序列、1035.不相交的线、53. 最大子序和、392.判断子序列
  • SQL进阶day10————多表查询
  • Xmind导入纯文本TXT方法
  • Flutter之旅:探索安卓与跨平台开发的无限可能
  • 【云原生Kubernetes项目部署】k8s集群+高可用负载均衡层+防火墙
  • 【Leetcode】101. 对称二叉树
  • ECMAScript6(0):ES6简明参考手册
  • HTTP中的ETag在移动客户端的应用
  • javascript面向对象之创建对象
  • Laravel核心解读--Facades
  • linux学习笔记
  • RxJS: 简单入门
  • SpiderData 2019年2月25日 DApp数据排行榜
  • underscore源码剖析之整体架构
  • 搭建gitbook 和 访问权限认证
  • 讲清楚之javascript作用域
  • 如何合理的规划jvm性能调优
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用权重正则化较少模型过拟合
  • 协程
  • 一个SAP顾问在美国的这些年
  • 再次简单明了总结flex布局,一看就懂...
  • 转载:[译] 内容加速黑科技趣谈
  • Java总结 - String - 这篇请使劲喷我
  • Nginx实现动静分离
  • 湖北分布式智能数据采集方法有哪些?
  • 移动端高清、多屏适配方案
  • # 职场生活之道:善于团结
  • %@ page import=%的用法
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Ruby)Ubuntu12.04安装Rails环境
  • (windows2012共享文件夹和防火墙设置
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)Oracle存储过程编写经验和优化措施
  • (转)大型网站的系统架构
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET基础篇——反射的奥妙
  • .NET企业级应用架构设计系列之结尾篇
  • .project文件
  • :not(:first-child)和:not(:last-child)的用法