首页 > 数据库 >SQL-分组聚合 - 多字段分组

SQL-分组聚合 - 多字段分组

时间:2024-12-04 21:23:26浏览次数:6  
标签:exam 多字段 amount num 分组 SQL id

有时,单字段分组并不能满足我们的需求,比如想统计学校里每个班级每次考试的学生情况,这时就可以使用多字段分组。

多字段分组和单字段分组的实现方式几乎一致,使用 GROUP BY 语法即可。

示例

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

数据如下:

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

要查询使用多字段分组查询表中 每个客户 购买的 每种商品 的总金额,相当于按照客户编号和商品编号分组:

-- 查询每个用户购买的每种商品的总金额,按照客户编号和商品编号分组

SELECT customer_id, product_id, SUM(amount) AS total_amount FROM orders GROUP BY customer_id, product_id

查询结果:

customer_id product_id total_amount
A001 1 250
A001 2 50
A002 1 200
A003 1 50

题目

假设有一个学生表 student,包含以下字段:id(学号)、name(姓名)、class_id(班级编号)、exam_num(考试次数)、score(成绩)。请你编写一个 SQL 查询,统计学生表中的班级编号(class_id),考试次数(exam_num)和每个班级每次考试的总学生人数(total_num)。

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, exam_num, count(*) as total_num from student group by class_id, exam_num

标签:exam,多字段,amount,num,分组,SQL,id
From: https://www.cnblogs.com/zydow/p/18587215

相关文章

  • 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......
  • windows系统下 重置mysql数据库的密码
    停掉mysql服务win+x按a进入管理员cmd,输入netstopmysql(mysql是服务名,不清楚的可以在服务中查看)2.输入mysqld爆红进入mysql安装目录输入./mysqld--console--skip-grant-tables报错要加入数据目录地址,输入.\mysqld--console--datadir="D:\Deve......