软件测试|MySQL中的GROUP BY分组查询,你会了吗?

MySQL中的GROUP BY分组查询:详解与示例

在MySQL数据库中,GROUP BY语句用于将数据按照指定的列进行分组,并对每个分组执行聚合函数操作。这就是的我们可以在查询中汇总数据并生成有意义的结果。本文将深入介绍MySQL中的GROUP BY语句,并提供示例来说明其用法。

基本语法

在 MySQL 中,GROUP BY 关键字可以根据一个或多个字段对查询结果进行分组。

使用 GROUP BY 关键字的语法格式如下:

SELECT 列1, 列2, 聚合函数(列3)
FROM 表名
GROUP BY 列1, 列2;

在上述语法中,我们需要指定要选择的列(除了聚合函数所用的列)。然后使用GROUP BY将结果按照指定的列进行分组。最后,您可以使用聚合函数(如SUM、COUNT、AVG等)对每个分组进行操作。

使用示例

  1. 订单总额按客户分组

假设我们有一个订单表orders,包含customer_idorder_dateorder_amount等列。我们想要按照客户分组,计算每个客户的订单总额,语句如下:

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

在上述查询中,我们选择了customer_id列,并使用SUM()函数计算每个客户的订单总额。然后使用GROUP BY将结果按照customer_id分组。

  1. 按月份统计销售数量

假设我们有一个销售表sales,包含sale_datequantity列。我们想要按照每个月份统计销售的总数量,语句如下:

SELECT DATE_FORMAT(sale_date, '%Y-%m') AS month, SUM(quantity) AS total_quantity
FROM sales
GROUP BY month;

在上述查询中,我们使用DATE_FORMAT()函数将sale_date格式化为%Y-%m的形式,以表示年份和月份。然后使用SUM()函数计算每个月份的销售总数量,并通过GROUP BY按照month进行分组。

  1. 多列分组

我们还可以同时按照多列进行分组。假设我们有一个员工表employees,包含departmentgender列。我们想要按照部门和性别统计员工数量,语句如下:

SELECT department, gender, COUNT(*) AS employee_count
FROM employees
GROUP BY department, gender;

在上述查询中,我们选择了departmentgender列,并使用COUNT()函数计算每个部门和性别组合的员工数量。然后使用GROUP BY将结果按照这两列进行分组。

  1. 筛选特定分组

有时候,我们可能只想要对满足特定条件的分组执行聚合操作。假设我们有一个学生表students,包含major和gpa列。我们想要统计每个专业中平均GPA大于3.5的学生数量,语句如下:

SELECT major, AVG(gpa) AS avg_gpa, COUNT(*) AS student_count
FROM students
GROUP BY major
HAVING avg_gpa > 3.5;

在上述查询中,我们使用AVG()函数计算每个专业的平均GPA,并使用COUNT()函数计算每个专业的学生数量。然后使用GROUP BY将结果按照major分组。最后,我们使用HAVING子句筛选出平均GPA大于3.5的专业。

总结

MySQL中的GROUP BY语句允许我们对数据进行分组,并在每个分组上执行聚合操作。通过合理使用GROUP BY,我们可以从大量数据中提取有意义的信息,以满足各种分析和报告需求。在实际使用中,我们需要注意合理选择聚合函数和分组列,以获得所需的统计结果。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/611234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年度总结:但行前路,不负韶华

​ 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:Vir2021GKBS &#x…

k8s部署mongodb-sharded7.X集群(多副本集)

#mongodb-sharded 7.X版本CHART NAME: mongodb-sharded CHART VERSION: 7.0.5 APP VERSION: 7.0.2helm repo add bitnami https://charts.bitnami.com/bitnami helm pull bitnami/bitnami/mongodb-sharded --untar默认副本数较多。我修改为33 搜索关键字replicaCount 修改 最后…

Linux 软raid函数 - - align_to_barrier_unit_end

函数功能:获取barrier bucket对齐之后的扇区长度。 源码调用: good_sectors align_to_barrier_unit_end(sector_nr, good_sectors);其中good_sectors的值为128,也就是缺省同步chunk size 64K,kretprobe跟踪的结果来看&#xff0…

盖子的c++小课堂——第二十四讲:差分数组

前言 嗨嗨嗨,这里是盖子的小课堂哟,这次更新主要是因为快放假了,时间多了,好嘞,废话不多说,点赞评论拿来吧你~ 差分数组 一维差分数组 假设给你一个数组 nums ,先对区间 [a,b] 中每个元素加…

C#中关于DataGridView行和列的背景色及列标题的背景颜色设置

1、DateGridView实现黑底红色,可通过设置、背景色、前景色和字体颜色、 默认列标题样式实现。 BackgroundColor设置背景色 GridColor设置网格线颜色 BorderStyle设置边框样式 RowHeadersVisables设置是否显示包含行标题的列 EnableHeadersVisualStyles设置为f…

WPF真入门教程26--项目案例--欧姆龙PLC通讯工具

1、案例介绍 前面已经完成了25篇的文章介绍,概括起来就是从0开始,一步步熟悉了wpf的概念,UI布局控件,资源样式文件的使用,MVVM模式介绍,命令Command等内容,这节来完成一个实际的项目开发&#…

vue项目心得(复盘)

在编写项目过程中,首先是接手一个需要优化的项目,需要查看vue.config.js环境配置地址,确认好测试地址后进行开发,目前在开发过程中,遇到的最多的问题就是关于组件间的, 组件间传值 1、父组件异步传值&…

Helm-从0手动创建charts

Helm-从0手动创建charts 创建 chart 目录结构&#xff1a; mkdir my-nginx cd my-nginx创建 Chart.yaml &#xff1a; cat > Chart.yaml << EOF apiVersion: v2 appVersion: v1.0 description: A Helm chart for Kubernetes name: nginx-app version: 0.1.0 EOF创建…

从0开始学Git指令(2)

从0开始学Git指令 因为网上的git文章优劣难评&#xff0c;大部分没有实操展示&#xff0c;所以打算自己从头整理一份完整的git实战教程&#xff0c;希望对大家能够起到帮助&#xff01; 工作区&#xff08;Working Directory&#xff09; 就是你在电脑里能看到的目录&#x…

性能分析与调优: Linux 使用 iperf3 进行TCP网络吞吐量测试

目录 一、实验 1.环境 2.TCP网络吞吐量的微观基准测试 二、问题 1.iperf参数有哪些 2.iperf如何二进制安装 一、实验 1.环境 &#xff08;1&#xff09;主机 表1-1 主机 主机架构组件IP备注prometheus 监测 系统 prometheus、node_exporter 192.168.204.18grafana监测…

dotdotdot插件快速实现多行文本的省略

jQuery.dotdotdot 前言 在“css新增文本样式&#xff08;完整&#xff09;”这篇&#xff0c;我们介绍了text-overflow属性省略多余的文本。用text-overflow属性可以直接省略单行文本&#xff0c;但省略多行文本&#xff0c;单独使用CSS是无法实现&#xff0c;今天我们介绍一…

RabbitMQ高级

文章目录 一.消息可靠性1.生产者消息确认2.消息持久化3.消费者确认4.消费者失败重试 MQ的一些常见问题 1.消息可靠性问题:如何确保发送的消息至少被消费一次 2.延迟消息问题:如何实现消息的延迟投递 3.高可用问题:如何避免单点的MQ故障而导致的不可用问题 4.消息堆积问题:如…

golang学习-匿名函数和闭包

1、匿名函数 没有函数名的函数&#xff0c;格式如下&#xff1a; func(参数)返回值{ 函数体 } func main() {//将匿名函数保存到变量中sum : func(x, y int) int {return x y}fmt.Println(sum(10, 20)) //通过变量调用匿名函数//自执行函数:匿名函数定义完加()直接执行fu…

了解不同方式导入导出的速度之快

目录 一、用工具导出导入 Navicat&#xff08;速度慢&#xff09; 1.1、导入&#xff1a; 共耗时&#xff1a; 1.2、导出表 共耗时&#xff1a; 二、用命令语句导出导入 2.1、mysqldump速度快 导出表数据和表结构 共耗时&#xff1a; 只导出表结构 导入 共耗时&…

保持数据同步:高并发场景下的数据库与缓存一致性维护策略

标题&#xff1a;保持数据同步&#xff1a;高并发场景下的数据库与缓存一致性维护策略 在当今数字化时代&#xff0c;应用程序对实时数据的需求变得越来越高&#xff0c;而在处理大量用户同时访问的情况下&#xff0c;数据库与缓存的一致性成为了一个挑战。无论是电子商务平台…

【前沿技术杂谈:ChatGPT】ChatGPT——热潮背后的反思

【前沿技术杂谈&#xff1a;ChatGPT】ChatGPT——热潮背后的反思 缘起&#xff1a;无中生有&#xff0c;涅槃重生人工智能技术人工智能的发展史无中生有内容自动生成技术的发展代表企业OpenAI-GPT系列技术的发展历程ChatGPT新特点 热潮&#xff1a;万众瞩目&#xff0c;群雄逐鹿…

深入理解STL空间分配器(一)

目录 1.概述 2. STL的几种空间分配器介绍 3. new_allocator 3.1 allocate的实现 3.2 deallocate的实现 3.3 其中几个宏的定义 3.4 _M_max_size的实现 4. malloc_allocator 1.概述 STL的空间分配器&#xff08;allocator&#xff09;定义于命名空间std内&#xff0c;主…

Super关键字

与this关键字用法相同&#xff0c;但super关键字指的是父类的对象 我们常用super.来调用父类对象的属性或者方法 super关键字出来调用父亲的属性还可以调用父亲的方法&#xff0c;方式也是super. super() super()表示调用父类的无参构造 super(参数列表)表示调用父类的有参…

Java中的网络编程

文章目录 网络基础知识IP 地址端口协议 Java 中网络编程InetAddress&#xff08;静态类&#xff09;UDP 通信原理UDP 发送数据步骤UDP 接收数据步骤UDP 发送接收案例 TCP 通信原理TCP 发送数据步骤TCP 接收数据步骤TCP 发送接收案例 网络基础知识 概述&#xff1a;在网络通信协…

认识Linux指令之与时间相关的指令

01.date命令 date 指定格式显示时间&#xff1a; date %Y:%m:%d date 用法&#xff1a;date [OPTION]... [FORMAT] 1.在显示方面 在显示方面&#xff0c;使用者可以设定欲显示的格式&#xff0c;格式设定为一个加号后接数个标记&#xff0c;其中常用的标记列表如下 %H : …