-
2019-09-07 16:59:50
区间分组统计查询需要使用到 elt,interval
一、根据学生的分数段统计各个分数段的学生总数create table
class
(
id
int(11) not null auto_increment,
score
int(11) default 0,
primary key(id
)
)engine=innodb auto_increment=21 default charset=utf8;添加一些数据
统计各个分数段的学生人数
比如:统计<50,50-60,60-70,70-80,80-90,90-100的分数区间内的人数
利用interval划出6个区间,在利用elt函数将6个区间分别返回一个列名,SQL如下:
select elt(
interval(score,0,50,60,70,80,90),
‘<50’,‘50-60’,‘60-70’,‘70-80’,‘80-90’,‘90-100’
) as score_level ,count(*) as counts
from class
group by elt(
interval(score,0,50,60,70,80,90),
‘<50’,‘50-60’,‘60-70’,‘70-80’,‘80-90’,‘90-100’
);自定义排序:
select elt(
interval(score,0,50,60,70,80,90),
‘1/<50’,‘2/50-60’,‘3/60-70’,‘4/70-80’,‘5/80-90’,‘6/90-100’
) as score_level ,count(*) as counts
from class
group by elt(
interval(score,0,50,60,70,80,90),
‘1/<50’,‘2/50-60’,‘3/60-70’,‘4/70-80’,‘5/80-90’,‘6/90-100’
);
更多相关内容 -
mysql加强(3)~分组(统计)查询
2022-01-26 21:10:07mysql加强(3)~分组(统计)查询
一、
分组(统计)
查询1、语法 :
select [distinct] *| 分组字段1[别名] [,分组字段2[别名],…] | 统计函数
from 表名 [别名]
[where 条件(s)]
[group by 分组字段1[,分组字段2]]
[having 分组后的过滤条件(可以使用统计函数)]
[order by 排序字段 asc|desc[,排序字段 asc|desc]];
2、注意分组的细节:
❀ 分组查询:select 后的字段必须是**
分组字段
**(跟在group by 后面的字段) 或统计函数字段
#错误使用分组(统计)查询【查询的字段不是分组字段】 select empno, count(empno) from emp;
❀ 不能在where 子句中限制组,即**
不能在where子句中使用组函数(统计函数)
。**#错误使用分组(统计)查询【组函数出现在where的子句中】 select avg(sal) from emp where avg(sal) > 2000 group by deptno;
❀ 对分组的结果进行限制(过滤)—使用
having
对组
进行筛选#查询各个部门的平均工资 select deptno, avg(sal) from emp group by deptno; #查询平均工资高于2000的部门和其平均工资 ('平均工资高于2000'是分组之后的筛选条件) select avg(sal) from emp group by deptno having avg(sal) > 2000;
❀ 并列分组:
-
单列分组:水果分为苹果、香蕉、葡萄。一共分为3个组。
-
什么是并列分组:水果分为苹果、香蕉、葡萄;然后苹果又可以分为红富士、丑苹果;香蕉又分为芭蕉、小米蕉;葡萄又分为红提、青提。一共分成6个组。
#查看各个部门和岗位的平均工资 select deptno, job, avg(sal) from emp group by deptno, job;
■ sql语句的执行顺序:从哪张表过滤掉不合法数据,然后分组(对分组结果再过滤一下)显示出来,进行排序、分页。
from where group by having select order by limit
■ where 和 having 执行的先后:
① where 是在
分组之前
进行筛选,先过滤掉不合法数据, 在 where 之中不能使用统计函数(组函数)。② having 是在
分组之后
进行筛选,对组的结果进行过滤。
-
-
数据库的分组统计查询
2020-03-28 22:21:52对查询结果进行计算或分类汇总 使用分组查询 若要对查询结果进行分类汇总时,需要使用Group by子句 Group by子句将查询结果按某列(或多列)的值分组,值相等的为一组 若未对查询结果分组,聚集函数将作用于... -
Oracle中对数据分组统计
2021-09-30 09:34:34一、实现效果 1.1、原表内容 1.2、实现效果 ...③实现对报警信息(TYPENAME)内容分组统计,且获取最小开始时间(CreationTimeStart)、最大结束时间(CreationTime)差值(对差值保留2位小数).一、实现效果
1.1、原表内容
1.2、实现效果
①实现对报警信息(TYPENAME)内容分组,且对设备编号、报警信息、开始时间排序效果。
②实现对报警信息(TYPENAME)内容分组统计,且计算开始时间(CreationTimeStart)、结束时间(CreationTime)差值(对差值保留2位小数)效果。
③实现对报警信息(TYPENAME)内容分组统计,且获取最小开始时间(CreationTimeStart)、最大结束时间(CreationTime)差值(对差值保留2位小数)效果。
二、实现原理
2.1、实现思路
①使用【Group by】对需要分组的字段分组;
②使用【Count】统计个数,【Sum】求和,【min、max】求最小最大;
③使用【Order by】对需要排序的字段排序;
④基础的sql语句
//分组的基础SQL执行语句 SELECT '字段1','字段2','字段3' FROM '表名称' GROUP BY '需分组的字段1','需分组的字段2','需分组的字段3' HAVING '需要判断的字段条件' ORDER BY '需排序的字段' ASC
2.2、实现效果的SQL语句
①实现对报警信息(TYPENAME)内容分组,且对设备编号、报警信息、开始时间排序SQL.
SELECT DeviceNumber, DeviceName, DeviceType, TypeName, DeviceValue, CreationTimeStart, CreationTime FROM DEVICEALARM WHERE DeviceNumber IN ( 'C1_02_01' ) AND TYPENAME LIKE '%1管%' AND CreationTimeStart BETWEEN TO_DATE( '2021-09-28 08:00:00', 'yyyy-MM-dd hh24:mi:ss' ) AND TO_DATE( '2021-09-28 19:59:59', 'yyyy-MM-dd hh24:mi:ss' ) GROUP BY DeviceNumber, DeviceName, DeviceType, TypeName, DeviceValue, CreationTimeStart, CreationTime ORDER BY DeviceNumber ASC, TYPENAME ASC, CreationTimeStart DESC
②实现对报警信息(TYPENAME)内容分组统计,且计算开始时间(CreationTimeStart)、结束时间(CreationTime)差值(对差值保留2位小数)效果。
SELECT DeviceNumber, DeviceName, DeviceType, TypeName, COUNT( TypeName ) AlarmNumber, TO_CHAR( SUM( AffectMinutes ), 'FM9990.00' ) AffectMinutes1 FROM ( SELECT * FROM ( SELECT DeviceNumber, DeviceName, DeviceType, TypeName, CreationTimeStart, CreationTime, TO_CHAR( ( ( DA.CreationTime - DA.CreationTimeStart ) * 24 * 60 ), 'FM9990.00' ) AffectMinutes FROM DEVICEALARM DA ) WHERE DeviceNumber IN ( 'C1_02_01' ) AND TYPENAME LIKE '%1管%' AND CreationTimeStart BETWEEN TO_DATE( '2021-09-28 08:00:00', 'yyyy-MM-dd hh24:mi:ss' ) AND TO_DATE( '2021-09-28 19:59:59', 'yyyy-MM-dd hh24:mi:ss' ) ) GROUP BY DeviceNumber, DeviceName, DeviceType, TypeName ORDER BY TypeName ASC
③实现对报警信息(TYPENAME)内容分组统计,且获取最小开始时间(CreationTimeStart)、最大结束时间(CreationTime)差值(对差值保留2位小数)效果。
SELECT * FROM ( SELECT DeviceNumber DeviceNumber1, DeviceName DeviceName1, DeviceType DeviceType1, TypeName AlarmInfo1, AlarmNumber AlarmNumber1, TO_CHAR( ( ( PerGroupMaxEndTime - PerGroupMinStartTime ) * 24 ), 'FM9990.00' ) AffectMinutes1 FROM ( SELECT DeviceNumber, DeviceName, DeviceType, TypeName, COUNT( TypeName ) AlarmNumber, MIN( CreationTimeStart ) PerGroupMinStartTime, MAX( CreationTime ) PerGroupMaxEndTime FROM ( SELECT * FROM DEVICEALARM WHERE DeviceNumber IN ( 'C1_02_01' ) AND TYPENAME LIKE '%1管%' AND CreationTimeStart BETWEEN TO_DATE( '2021-09-28 08:00:00', 'yyyy-MM-dd hh24:mi:ss' ) AND TO_DATE( '2021-09-28 19:59:59', 'yyyy-MM-dd hh24:mi:ss' ) ) GROUP BY DeviceNumber, DeviceName, DeviceType, TypeName ORDER BY DeviceNumber ASC, TypeName ASC ) ) WHERE AffectMinutes1 >0
-
Oracle如何对一个多值字段进行分组统计
2020-12-29 15:46:42/ -- 定义一个 表/数组类型, 内容是前面定义的那个对象. CREATE OR REPLACE TYPE ty_tbl_str_split IS TABLE OF ty_row_str_split; / -------------------- -- 字符分割函数. -- 参数1: 被分割的源... -
mysql group by 对多个字段进行分组操作
2020-12-14 07:37:39在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获取数据表中以分组字段为依据的统计数据。 比如有一个学生选课表,表结构如下: Table: Subject_Selection Subject Semester Attendee ——————... -
分组统计查询
2020-01-27 07:39:01分组统计查询 1.统计函数(分组函数) 常用的统计函数: 统计个数:COUNT();根据表中的实际数据量返回结果 求和:SUM()、是针对于数字的统计 最小值:MIN()、各种数据类型都支持 最大值:MAX()、各种数据类型都... -
如何对查询的数据进行二次分组??
2021-01-28 04:49:50首先根据我业务需求,我需要对数据进行按时间分组,这一步可以实现,附上代码:(我使用的是php原生的数据库查询语句)$data = $request->getQueryParams();$from = $data['from'];$to = $data['to'];$res = Plan::... -
ES 24 - 通过 Elasticsearch 实现聚合检索 (分组统计)
2021-01-12 04:08:36[TOC]1 普通聚合分析1.1 直接聚合统计(1) 计算每个tag下的文档数量, 请求语法:GET book_shop/it_book/_search{"size": 0, // 不显示命中(hits)的所有文档信息"aggs": {"group_by_tags": {// 聚合结果的名称, 需要... -
根据某一字段对数据进行分组统计
2019-01-17 09:30:31如何根据某一字段对数据进行分组统计? 在项目要求中要求实现此页面功能 在这里要求统计公司20GP,40GP,40HC的柜量和TEU情况, 下面是我实现此功能的页面 啊啊,页面设计不好看,虽然实现的内容与要求的有些许... -
MySQL对数据表进行分组查询
2021-01-18 21:03:37MySQL对数据表进行分组查询(GROUP BY)GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组。字段中值相等的为一组。基本的语法格式如下:GROUP BY 属性名 [HAVING 条件表达式] [WITH ROLLUP]属性名:是指... -
ES指定内容分组统计
2020-03-05 15:09:31查询JSON如下: { "query": { "bool": { "filter": [ { "terms": { "T2.keyword": [ “北京”,“天津”,“上海” ] }}, {"range": { ... -
ORACLE分组查询和统计等
2020-12-19 02:37:36select flow_id,rw from (select t.flow_id ,rownum as rw from apex_030200....子查询引用只能在查询出的结果中引用,比如子查询没有查出flow_id,外层不能用,另外外层不能引用内层的t3.薪水前三名,内层查出薪水 ... -
按类别分组统计图书数据C#实现
2021-03-16 01:07:43摘要:C#源码,数据库应用,分组统计,CrystalReport 一个基于C#的分组统计源程序,按类别分组统计图书数据库中的内容,并使用了CrystalReport的部分功能将数据显示出来,这个例子同样适合C#初学者,数据库测试文件在... -
mysql 分组查询并统计数量
2021-09-23 14:03:34方法一: 1、SQL实现如下 SELECT grpType '单位性质类别', count(`grpNo`) '企业客户数' FROM fcgrpinfo GROUP BY grpType 2、查询结果如下 方法二: 1、SQL实现如下 SELECT COALESCE (`grpType`, '总数') '单位... -
SQL Server 分组统计查询(按月、小时分组)
2021-01-14 16:19:47这篇文章主要为大家详细介绍了SQL Server 分组统计查询(按月、小时分组),具有一定的参考价值,可以用来参考一下。感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!设置AccessCount字段可以根据需求在... -
通过java对MongoDB进行分组查询。
2020-10-13 16:55:29想要对该字段进行分组,这样的话就能查到这个集合中有多少个日期数据。 网上查了两个小时,可算找到了办法。 实现: 需要用到的对象有mongoTemplate以及Aggregation。 public void groupOfMongodb(){ ... -
Mongodb——使用Mongodb对字段中字符串内容进行截取,并进行分组统计
2020-06-11 22:13:00针对字段中某部分内容的指标统计 在使用mongodb进行指标统计的时候可能遇见下面的数据结构 /* 1 */ { "_id" : ObjectId("5edf4b5c64574814bc8ae4ae"), "address" : "河南,信阳", "state" : 0, "remark" : "发送... -
实验四数据库的分组查询和统计查询连接查询报告.doc
2020-04-21 09:57:38实验四 数据库的分组查询统计查询和连接查询 学号 姓名 实验目的 熟练掌握数据查询中的分组统计计算集合连接查询的操作方法 实验内容 使用聚集函数查询分组计算查询集合查询连接查询 实验步骤 一. 使用聚集函数 查询... -
《数据库原理与应用》课程实验报告四 –数据库的组合和统计查询
2020-12-14 10:38:02《数据库原理与应用》课程实验报告 数据库的组合和统计查询 ...该实验包括统计函数和分组统计函数的使用方法。 3、组合查询实验。 4、计算和分组计算查询的实验。 2.实验过程 创建图书表 create tabl -
ES 24 - 如何通过Elasticsearch进行聚合检索 (分组统计)
2020-12-19 13:46:031 普通聚合分析1.1 直接聚合统计(1) 计算每个tag下的文档数量, 请求语法:GET book_shop/it_book/_search{"size": 0, // 不显示命中(hits)的所有文档信息"aggs": {"group_by_tags": { // 聚合结果的名称, 需要自定义... -
Mybatis之分组查询
2022-04-11 17:04:44在应用开发中,分组统计是非常经典的需求,在springboot+mybatis+mysql中实现分组统计。 学生信息统计场景,学生包含姓名、性别、年龄、地址等属性。 按性别分组统计数量 按地址分组统计数量 按地址、性别分组统计... -
第八章:SQL Server2019数据库之分组统计(GROUP BY)
2021-04-21 09:51:58目录一、分组统计1、使用 GROUP BY 子句创建分组2、使用 GROUP BY 子句创建多列分组3、对表达式进行分组统计4、在统计中使用 ROLLUP 关键字和 CUBE 关键字5、GROUP BY 子句的 NULL 值处理6、使用 HAVING 子句进行... -
mysql 怎样统计分组数
2021-01-27 21:15:08我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$... begin II:=2021-01-16 17:49:22条件查询-模糊匹配PostgreSQL和SQL Server的模糊匹配lik... -
Django分组聚合查询实例分享
2020-09-16 22:37:35在本篇文章里小编给大家分享的是关于Django分组聚合查询实例内容,需要的朋友们可以参考下。 -
数据库查询之(Ⅱ)统计、分组(排序)查询
2012-10-30 21:39:49统计查询: 统计函数: 例1:求学号为S1的学生的总分和平均分 Select sum(score) as TotalSc ore,avg(score) as AveScore from sc where sno=s1 例2:求选修C1课程的最高分和最低分以及两者的差数 Select ... -
oracle数据库之分组查询
2021-05-08 11:55:04本章内容和大家分享的是数据当中的分组查询。分组查询复杂一点的是建立在多张表的查询的基础...分组查询概念什么是分组查询:分组查询是按照一定的规则进行分组,分组以后数据会聚合,需要使用聚合函数,但是使用聚... -
Oracle-----多表查询与分组统计&having子句&分组案例
2020-03-25 21:56:05文章目录1、多表查询与分组统计(重点)1.1 范例1:查询出每个部门的名称、部门人数、平均工资 ????大家好!我是近视的脚踏实地,这篇文章主要是来学习Oracle的多表查询与分组统计 唯有... -
java8 集合 多字段 分组 统计个数代码
2021-02-13 02:27:09} 感觉这样写好麻烦,不过最后还好弄出来了,如果有更好的方法请告诉我一下 页面展示: 以上这篇java8 集合 多字段 分组 统计个数代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持...