首页 > 数据库 >SQL-分组聚合 - having 子句

SQL-分组聚合 - having 子句

时间:2024-12-04 21:34:09浏览次数:4  
标签:customer 子句 having score 分组 SQL HAVING id

在 SQL 中,HAVING 子句用于在分组聚合后对分组进行过滤。它允许我们对分组后的结果进行条件筛选,只保留满足特定条件的分组。

HAVING 子句与条件查询 WHERE 子句的区别在于,WHERE 子句用于在 分组之前 进行过滤,而 HAVING 子句用于在 分组之后 进行过滤。

示例

假设有一个订单表 orders,包含以下字段:order_id(订单号)、customer_id(客户编号)、amount(订单金额)。数据如下:

order_id customer_id amount
1 A001 100
2 A002 200
3 A001 150
4 A003 50

1)使用 HAVING 子句查询订单数超过 1 的客户:

SELECT customer_id, COUNT(order_id) AS order_num
FROM orders
GROUP BY customer_id
HAVING COUNT(order_id) > 1

查询结果:

customer_id order_num
A001 2

2)使用 HAVING 子句查询订单总金额超过 100 的客户:

-- 查询订单总金额超过100的客户

SELECT customer_id, SUM(amount) AS total_amount
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 100;

查询结果:

customer_id total_amount
A001 250
A002 200

题目

假设有一个学生表 student,包含以下字段:id(学号)、name(姓名)、class_id(班级编号)、score(成绩)。请你编写一个 SQL 查询,统计学生表中班级的总成绩超过 150 分的班级编号(class_id)和总成绩(total_score)。

id name age class_id score exam_num
1 鸡哥 25 1 2.5 1
2 鱼皮 18 1 400 4
3 热dog 40 2 600 4
4 摸FISH 2 360 4
5 李阿巴 19 3 120 2
6 老李 56 3 500 4
7 李变量 24 4 390 3
8 王加瓦 23 4 0 4
9 赵派森 80 4 600 4
10 孙加加 60 5 100.5 1
点击查看答案
select class_id, sum(score) as total_score
from student
group by class_id
having sum(score) > 150

标签:customer,子句,having,score,分组,SQL,HAVING,id
From: https://www.cnblogs.com/zydow/p/18587232

相关文章

  • SQL-分组聚合 - 多字段分组
    有时,单字段分组并不能满足我们的需求,比如想统计学校里每个班级每次考试的学生情况,这时就可以使用多字段分组。多字段分组和单字段分组的实现方式几乎一致,使用GROUPBY语法即可。示例假设有一个订单表orders,包含以下字段:order_id(订单号)、product_id(商品编号)、customer_id(客户......
  • SQL-函数 - 聚合函数
    在SQL中,聚合函数是一类用于对数据集进行汇总计算的特殊函数。它们可以对一组数据执行诸如计数、求和、平均值、最大值和最小值等操作。聚合函数通常在SELECT语句中配合GROUPBY子句使用,用于对分组后的数据进行汇总分析。常见的聚合函数包括:COUNT:计算指定列的行数或非空......
  • SQL-分组聚合 - 单字段分组
    在SQL中,分组聚合是一种对数据进行分类并对每个分类进行聚合计算的操作。它允许我们按照指定的列或字段对数据进行分组,然后对每个分组应用聚合函数,如COUNT、SUM、AVG等,以获得分组后的汇总结果。举个例子:某个学校可以按照班级将学生分组,并对每个班级进行统计。查看每个班级有多......
  • SQL-函数 - 时间函数
    在SQL中,时间函数是用于处理日期和时间的特殊函数。它们允许我们在查询中操作和处理日期、时间、日期时间数据,从而使得在数据库中进行时间相关的操作变得更加方便和灵活。常用的时间函数有:DATE:获取当前日期DATETIME:获取当前日期时间TIME:获取当前时间示例假设有一个订单表o......
  • php毕业设计服装购物商城在线购物系统电商系统电子商城线上购物系统购物网站计算机毕
    一.功能介绍用户前台功能:    前台主要包括网站首页、商品推荐、全部商品、热门商品、商品分类、商品资讯、评论、登录、注册、加入购物车、结算、个人中心等功能模块商品推荐、最新商品在商品推荐、热门商品模块,用户可以查看全部商品信息,选择商品进行添加购物车等......
  • SpringBoot连接多数据源MySQL、SqlServer等(MyBatisPlus测试)
    SpringBoot连接多数据源MySQL、SqlServer等(MyBatisPlus测试)在实际的项目开发中,我们往往需要同时连接多个数据源对数据进行处理。本文将详细介绍在SpringBoot下配合MybatisPlus如何连接多数据源,实例将会使用连接MySQL、SqlServer进行测试,可自行根据思路供自行连接Oracle、Po......
  • SQL-基础语法 - 条件分支
    条件分支casewhen是SQL中用于根据条件进行分支处理的语法。它类似于其他编程语言中的ifelse条件判断语句,允许我们根据不同的条件选择不同的结果返回。使用casewhen可以在查询结果中根据特定的条件动态生成新的列或对现有的列进行转换。举个例子:假设你是一位餐厅的服......
  • SQL-基础语法 - 截断和偏移
    我们先用一个比喻来引出截断和偏移的概念。假设你有一张待办事项清单,上面有很多任务。当你每次只想查看其中的几个任务时,会怎么办呢?1)你可以使用手指挡住不需要看的部分(即截断)2)根据任务的编号,直接翻到需要查看的位置(即偏移)在SQL中,我们使用LIMIT关键字来实现数据的截断和偏......
  • SqlServer运维——最大服务器内存
    1.关于最大服务器内存可以,MSSM数据库连接-->右键:服务器属性进行查看和配置1.对CPU的使用分配,可以选择SQLserver使用或者不使用某些CPU线程默认是勾选以下设置,一般不需要做什么设置自动设置所有处理器的处理关联掩码(P)自动设置所有处理器的I/O关联掩码(I)2.内存配置,通过......
  • DVWA sql注入(low)
    准备环境kali上开启容器并在物理机上启动直接爆列数1'orderby1#1'orderby2#1'orderby3#爆到三出错证明只有2列这样就很简单了,下面的步骤就直接套公式就行了爆信息1'unionselect1,database()frominformation_schema.tableswheretable_schema=dat......