mysql学习教程,从入门到精通,SQL GROUP BY 子句(31)

news2024/10/2 11:11:45

1、SQL GROUP BY 子句

当然!在SQL中,GROUP BY 子句用于将结果集中的多个记录组合成一个摘要记录。通常,它用于结合聚合函数(如 COUNT(), SUM(), AVG(), MAX(), MIN() 等)来计算每个组的汇总信息。以下是一个详细的例子,演示如何使用 GROUP BY 子句。
假设我们有一个名为 sales 的表,其中包含以下列:

  • id (销售记录的唯一标识符)
  • product_name (产品名称)
  • quantity (销售数量)
  • sale_date (销售日期)
    我们想要计算每种产品的销售总量和平均销售数量。以下是SQL查询示例:
SELECT 
    product_name,
    SUM(quantity) AS total_quantity,
    AVG(quantity) AS average_quantity
FROM 
    sales
GROUP BY 
    product_name;

在这个查询中:

  1. SELECT 子句选择了我们想要显示的列:product_nameSUM(quantity)AVG(quantity)
    • SUM(quantity) 计算每种产品的总销售数量,并将结果命名为 total_quantity
    • AVG(quantity) 计算每种产品的平均销售数量,并将结果命名为 average_quantity
  2. FROM 子句指定了我们要查询的表,即 sales
  3. GROUP BY 子句指定了我们要按哪个列(或哪些列)来分组记录,这里是 product_name。这意味着结果集中的每一行都代表一个不同的产品,并包含该产品的总销售数量和平均销售数量。
    执行这个查询后,结果可能看起来像这样:
    | product_name | total_quantity | average_quantity |
    | ------------ | -------------- | ---------------- |
    | Product A | 150 | 10 |
    | Product B | 200 | 15 |
    | Product C | 120 | 8 |

在这个结果集中,每行都表示一种产品及其总销售数量和平均销售数量。

注意事项

  1. 列的选择:在 SELECT 子句中,除了聚合函数之外,只能包含 GROUP BY 子句中指定的列。如果尝试选择其他列,大多数SQL数据库会报错。
  2. 排序:如果需要对结果进行排序,可以使用 ORDER BY 子句。例如,按总销售数量降序排列:
    SELECT 
        product_name,
        SUM(quantity) AS total_quantity,
        AVG(quantity) AS average_quantity
    FROM 
        sales
    GROUP BY 
        product_name
    ORDER BY 
        total_quantity DESC;
    
  3. 过滤分组:可以使用 HAVING 子句来过滤分组结果。例如,只显示总销售数量大于100的产品:
    SELECT 
        product_name,
        SUM(quantity) AS total_quantity,
        AVG(quantity) AS average_quantity
    FROM 
        sales
    GROUP BY 
        product_name
    HAVING 
        SUM(quantity) > 100;
    

当然,以下是一些使用SQL GROUP BY 子句的实际例子,这些例子展示了在不同场景下如何应用该子句来分组和汇总数据。

例子1:按产品类别分组计算销售总额

假设我们有一个名为 sales 的表,其中包含以下列:

  • product_id(产品ID)
  • product_category(产品类别)
  • sale_amount(销售金额)

我们想要计算每个产品类别的销售总额。可以使用以下查询:

SELECT 
    product_category,
    SUM(sale_amount) AS total_sales
FROM 
    sales
GROUP BY 
    product_category;

这个查询将返回每个产品类别及其对应的销售总额。

例子2:按部门分组计算平均工资

假设我们有一个名为 employees 的表,其中包含以下列:

  • department(部门)
  • salary(工资)

我们想要计算每个部门的平均工资。可以使用以下查询:

SELECT 
    department,
    AVG(salary) AS average_salary
FROM 
    employees
GROUP BY 
    department;

这个查询将返回每个部门及其对应的平均工资。

例子3:按城市分组查找最高温度和最低温度

假设我们有一个名为 weather 的表,其中包含以下列:

  • city(城市)
  • temperature(温度)

我们想要找到每个城市的最高温度和最低温度。可以使用以下查询:

SELECT 
    city,
    MAX(temperature) AS max_temperature,
    MIN(temperature) AS min_temperature
FROM 
    weather
GROUP BY 
    city;

这个查询将返回每个城市及其对应的最高温度和最低温度。

例子4:按客户ID分组计算购买次数

假设我们有一个名为 orders 的表,其中包含以下列:

  • customer_id(客户ID)
  • order_date(订单日期)

我们想要知道每个客户的购买次数。可以使用以下查询:

SELECT 
    customer_id,
    COUNT(*) AS purchase_count
FROM 
    orders
GROUP BY 
    customer_id;

这个查询将返回每个客户及其对应的购买次数。

例子5:按月统计每个产品的销售总额

假设我们有一个名为 sales 的表,其中包含以下列:

  • product_id(产品ID)
  • sale_date(销售日期)
  • sale_amount(销售金额)

我们想要按月统计每个产品的销售总额。可以使用以下查询:

SELECT 
    product_id,
    DATE_FORMAT(sale_date, '%Y-%m') AS sale_month,
    SUM(sale_amount) AS total_sales
FROM 
    sales
GROUP BY 
    product_id, sale_month
ORDER BY 
    product_id, sale_month;

这个查询将返回每个产品在每个月的销售总额,并按产品和月份进行排序。
以上这些例子展示了如何在不同场景下使用SQL GROUP BY 子句来分组和汇总数据。希望这些例子能够帮助你更好地理解和应用该子句。

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

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

相关文章

【重学 MySQL】四十五、数据库的创建、修改与删除

【重学 MySQL】四十五、数据库的创建、修改与删除 一条数据存储的过程数据输入数据验证数据处理数据存储数据持久化反馈与日志注意事项 标识符命名规则基本规则长度限制保留字与特殊字符命名建议示例 MySQL 中的数据类型创建数据库创建数据库时指定字符集和排序规则 查看数据库…

[Linux]开发环境搭建

RPM和YUM 安装JDK 安装Tomcat 安装IDEA 安装MySql

代码随想录算法训练营Day20 | 235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

目录 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点 235. 二叉搜索树的最近公共祖先 题目 235. 二叉搜索树的最近公共祖先 - 力扣(LeetCode) 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先…

Yocto - 使用Yocto开发嵌入式Linux系统_05 认识Bitbake工具

Meeting the BitBake Tool 通过本章,我们将开始学习 Yocto 项目引擎如何在幕后工作的旅程。正如每一段旅程一样,沟通是至关重要的,因此我们需要理解 Yocto 项目工具所使用的语言,并学习如何充分利用这些工具来实现我们的目标。 Wi…

网页前端开发之Javascript入门篇(3/9):条件控制

Javascript条件控制 什么是条件控制? 答:其概念跟 Python教程 介绍的一样,只是语法上有所变化。 参考流程图如下: 其对应语法: var button false; // 开关状态 console.log("检查开关.."); if(bu…

一文掌握Harbor镜像同步公有云镜像仓库实践

一文掌握Harbor镜像同步公有云镜像仓库实践 目录 1 引言2 概念 2.1 Harbor2.2 阿里云的镜像仓库ACR2.3 华为云的镜像仓库SWR2.4 Harbor复制管理同步镜像 2.4.1 复制管理的工作原理 2.5 Harbor同步镜像到公有云镜像仓库的优势 3 实验:通过Harbor 将容器镜像同步到公…

刷题系统小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,知识点管理,科目类型管理,试题管理,试卷管理,系统管理 微信端账号功能包括:系统首页,我的 开发系统&#…

vulnhub-W34kn3ss 1靶机

vulnhub:https://www.vulnhub.com/entry/w34kn3ss-1,270/ 导入靶机,扫描 靶机开在192.168.81.7.扫描端口 扫到三个端口,存在网站服务,访问 80端口没什么东西,443似乎访问到的是同一个界面,这种情况下一般是…

Visual Studio C# 处理和修复 WinRiver II 测量项目 MMT 文件错误

Visual Studio C# 处理和修复 WinRiver II 测量项目 MMT 文件错误 前言一、WinRiver II 测量项目 MMT 文件的结构二、WinRiver II 无法打开或操作测量项目 MMT 文件2.1 无法载入船测多线法测量文件2.2 可以载入测验项目 MMT 文件,但 ADCP 后处理软件无法写入信息2.3…

基于SpringBoot+vue的监理公司信息化管理系统设计与实现

目录 1. 系统概述 2. 技术选型 3. 系统模块设计 3.1 收入支出管理 3.2 合同管理 3.3 财务统计 3.4 甲方乙方公告 4. 安全性考虑 5. 效果展示和示例代码 6. 总结 1. 系统概述 随着经济的快速发展和社会的进步,建筑行业作为国民经济的重要支柱产业之…

[MAUI]数据绑定和MVVM:MVVM的属性验证

一、MVVM的属性验证案例 Toolkit.Mvvm框架中的ObservableValidator类,提供了属性验证功能,可以使用我们熟悉的验证特性对属性的值进行验证,并将错误属性提取和反馈给UI层。以下案例实现对UI层的姓名和年龄两个输入框,进行表单提交验证。实现效果如下所示 View<ContentP…

医院体检管理系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;体检分类管理&#xff0c;体检套餐管理&#xff0c;体检预约管理&#xff0c;体检报告管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;体检套餐&a…

Jetson 开发系列:Orin Nano 开箱!一款强大的嵌入式物联网开发板

边缘计算作为 AI 的一个重要应用场景&#xff0c;面临着前所未有的机遇与挑战。 谈及 AI&#xff0c;自然绕不开 NVIDIA 的产品&#xff1a; 其中&#xff0c;Jetson 系列均为 AIoT 设备打造&#xff0c;功耗低是其最大的特点。以我手头的 Jetson Ori Nano 为例&#xff0c;满…

一文彻底搞懂多模态 - 基础术语+基础知识+多模态学习

文章目录 技术交流基本术语一、数据采集与表示二、数据处理与融合三、学习与推理 基础知识一、传统机器学习二、深度学习三、优化算法四、应用领域 多模态学习一、模态表示二、多模态融合图片 三、跨模态对齐 最近这一两周看到不少互联网公司都已经开始秋招发放Offer。 不同以…

【MAUI】View和ViewModel的关联方式

方式一:创建ViewModel对象: 在View中,通过设置BindingContext为ViewModel对象,即可进行绑定。如下所示: <ContentPage......xmlns:vm="clr-namespace:MauiApp8.ViewModels"><

多模态RAG实现

在标准 RAG 中&#xff0c;输入文档包含文本数据。LLM 利用上下文学习&#xff0c;通过检索与所提查询上下文相匹配的文本文档块来提供更相关、更准确的答案。 但是&#xff0c;如果文档包含图像、表格、图表等以及文本数据&#xff0c;该怎么办&#xff1f; 不同的文档格式包…

基于 Qwen2.5-0.5B 微调训练 Ner 命名实体识别任务

一、Qwen2.5 & 数据集 Qwen2.5 是 Qwen 大型语言模型的最新系列&#xff0c;参数范围从 0.5B 到 72B 不等。 对比 Qwen2 最新的 Qwen2.5 进行了以下改进&#xff1a; 知识明显增加&#xff0c;并且大大提高了编码和数学能力。在指令跟随、生成长文本&#xff08;超过 8K…

【Maven】依赖管理,Maven仓库,Maven核心功能

Maven 是一个项目管理工具&#xff0c;基于 POM&#xff08;Project Object Model&#xff0c;项目对象模型&#xff09;的概念&#xff0c;Maven 可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的项目管理工具软件 大白话&#xff1a;Maven 是一个项目管理工…

Spring MVC 常用注解

目录 基础概念 常用注解介绍 基础概念 1、MVC &#xff1a;代表一种软件架构设计思想&#xff0c;通俗的理解&#xff1a;客户端发送请求到后台服务器的Controller(C)&#xff0c;控制器调用Model(M)来处理业务逻辑&#xff0c;处理完成后&#xff0c;返回处理后的数据到Vie…

【CKA】七、七层负载-Ingress应用

7、七层负载-Ingress应用 1. 考题内容&#xff1a; 2. 答题思路&#xff1a; 1、要先查到集群中使用的ingressclass 2、编写yaml 我考的题只是把 hi 服务换成了 hello&#xff0c;其他都一模一样 3. 官网地址&#xff1a; https://kubernetes.io/zh-cn/docs/concepts/serv…