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

news/2024/10/8 4:11:38/

1、SQL GROUP BY 子句

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

  • id (销售记录的唯一标识符)
  • product_name (产品名称)
  • quantity (销售数量)
  • sale_date (销售日期)
    我们想要计算每种产品的销售总量和平均销售数量。以下是SQL查询示例:
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 子句。例如,按总销售数量降序排列:
    sql">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的产品:
    sql">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(销售金额)

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

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

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

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

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

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

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

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

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

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

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

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

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

sql">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(订单日期)

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

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

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

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

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

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

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

sql">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.ppmy.cn/news/1535974.html

相关文章

[单master节点k8s部署]29.Istio流量管理(五)

测试istio熔断管理。 采用httpbin镜像和fortio镜像,其中httpbin作为服务端,fortio是请求端。这两个的配置yaml文件都在istio的samples/httpbin目录下,fortio的配置文件在samples-client目录下。 [rootmaster httpbin]# ls gateway-api ht…

【面向对象】设计模式概念和分类

零.前提提要 本文章是我考中级软件设计师时的笔记,基本都是一些自己的思路和见解,现记录一下,希望可以帮助到即将考证的同学。 一.面向对象设计模式的概念 二.面向对象的设计模式分类 设计模式确定了所包含的类和实例、他们的角色和写作方式以…

Vue入门-Vue中实例和java中类的相同和不同

相似之处: 封装性: 在 Java 中,类可以封装数据和方法,将相关的属性和行为组合在一起。类似地,Vue 实例也封装了数据(data中的属性)、方法(methods中的函数)以及其他配置…

十万人正在看的国庆假期

河北爱心无限网行唐工作站携手上方镇小王阳关村两委,开展九九重阳节志愿服务活动,两位身穿红色背心的志愿者正忙碌于户外。彰显着他们对这个传统节日的尊重和对长辈的敬爱之情。背心的红色与节日的喜庆气氛相得应景。 随后新乐市蓝天志愿者们来到活动现场…

MySQL 实验 4:修改数据表的结构

MySQL 实验 4:修改数据表的结构 目录 MySQL 实验 4:修改数据表的结构一、为 MySQL 数据表添加列1、语法2、举例 二、 删除 MySQL 数据表中的某一列1、语法2、举例 三、修改 MySQL 数据表中列的数据类型1、语法2、举例 四、修改 MySQL 数据表的名称1、语法…

Pikachu-Cross-Site Scripting-xss之htmlspecialchars

首先输入各种字符 查看页面元素,可以看到这里对一些符号做了转换,但是 单引号等几个符号没处理; 从代码上看;使用单引号做闭合; 构造payload a onclickalert(11) 提交,得到xss攻击

1.Python 引入(字面量、注释、变量、数据类型、数据类型转换、标识符、运算符、字符串扩展)

一、字面量 1、基本介绍 在代码中,被写直接下来的、不需要通过变量存储的值,称之为字面量 2、常用值类型 类型说明数字(Number)整数(int),例如:10、-10浮点数(float&…