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

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

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.kler.cn/news/329485.html

相关文章:

  • 一起了解计算机神经网络
  • 【Linux】第一个小程序——进度条实现
  • 数据分析-29-基于pandas的窗口操作和对JSON格式数据的处理
  • 解决Github打不开或速度慢的问题
  • 职业技能大赛-单元测试笔记(参数化)分享
  • OpenHarmony(鸿蒙南向)——平台驱动指南【DAC】
  • 【floor报错注入】
  • 《深度学习》自然语言处理 统计、神经语言模型 结构、推导解析
  • 【css】如何设计出具有权威性的“机构”网页
  • OpenAI 推理模型 O1 研发历程:团队访谈背后的故事
  • 高防服务器有用吗?租用价格一般多少
  • 【Linux进程间通信】Linux匿名管道详解:构建进程间通信的隐形桥梁
  • HDFS Shell作业1
  • 查看 git log的过程中看到 :说明日志输出可能超出屏幕大小,系统进入了分页模式
  • UI自动化
  • TRIZ理论在机器人性能优化中的应用
  • pytorch之梯度累加
  • go基础面试题汇总第一弹
  • 双十一有哪些值得入手的好物?这五款宝藏好物不容错过!
  • pnpm依赖安装失败解决|pnpm项目从一个文件夹复制到另一个文件夹运行失败问题解决-以vbenAdmin项目为例
  • gitee公钥设置、创建库及使用
  • Pytorch基本知识
  • 04.useTitle
  • 第L6周:机器学习|支持向量机(SVM):2. 支持向量机实战
  • 深入探索机器学习中的聚类算法
  • 每日一题|983. 最低票价|动态规划、记忆化递归
  • OpenCV视频I/O(4)视频采集类VideoCapture之获取异常处理模式函数getExceptionMode()的使用
  • 【JavaEE初阶】深入理解多线程阻塞队列的原理,如何实现生产者-消费者模型,以及服务器崩掉原因!!!
  • 2024年7月大众点评全国美食店铺基础信息分析
  • C++初阶:STL详解(十)——priority_queue的介绍,使用以及模拟实现