分组聚合

聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用,所以有的时候也把其称之为分组函数。

在下面的介绍过程中我们还重点讲解了group by having等知识点,希望你所有收获!

group by 后可以跟多个分组的字段

select deptno,job,count(*) from emp group by deptno,job order by deptno;

非法使用组函数

1.select 后面只能跟两种数据1.聚合函数2.分组条件

1、 所用包含于SELECT 列表中,而未包含于组函数中的列都必须包含于 GROUP BY 子句中。

举例:select empno,count(job) from emp;

正确写法如下: select empno,count(job) from emp group by empno;

// group by 后可以跟多个分组的字段

select sid,cid,max(score)........group by sid

select sid,cid,max(score).........group by sid,cid

2、 不能在 WHERE 子句中使用组函数(注意)。

select deptno from emp where count(job)>0 group by deptno;

备注:ORA-00934: 此处不允许使用分组函数 Having 子句 HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 子句和 SELECT 语句交互的方式类似。

WHERE 子句搜索条件在进行分组操作之前应用;

而 HAVING 搜索条件在进行分组操作之后应用。

HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。

HAVING 子句可以引用选择列表中出现的任意项。

备注:having子句通常与group by子句结合使用

查询部门的员工人数大于五的部门编号

select deptno,count(*) from emp group by deptno having count(*)>5;

//求出某个部门中相同职位的员工人数 group by 后可以跟多个分组的字段
 select deptno,job,count(*) from emp group by deptno,job order by deptno;

Having 在则group必须在

group by在having未必在

备注:分组函数可以嵌套

嵌套函数

  函数可以嵌套。一个函数的输出可以是另一个函数的输入。操作数有一个可继承的执行过程。但函数的优先权只是基于位置,函数遵循由内到外,由左到右的原则.
 嵌套函数可以包括在组函数中嵌套单行函数,或者组函数嵌套入单行函数或组函数中
总结:整个查询语句的语法格式如下:
SELECT column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column];

时间: 2024-08-02 02:49:39

分组聚合的相关文章

Atitit  数据存储的分组聚合 groupby的实现attilax总结

Atitit  数据存储的分组聚合 groupby的实现attilax总结 1. 聚合操作1 1.1. a.标量聚合 流聚合1 1.2. b.哈希聚合2 1.3. 所有的最优计划的选择都是基于现有统计信息来评估3 1.4. 参考资料3 1. 聚合操作 聚合也是我们在写T-SQL语句的时候经常遇到的,我们来分析一下一些常用的聚合操作运算符的特性和可优化项. 1.1. a.标量聚合 流聚合 标量聚合是一种常用的数据聚合方式,比如我们写的语句中利用的以下聚合函数:MAX().MIN().AVG().C

Elasticsearch分组聚合-查询每个A_logtype下有多少数据

Elasticsearch分组聚合 1.查询指定索引下每个A_logtype有多少数据 curl -XPOST 'localhost:19200/ylchou-0-2015-10-07/_search?pretty' -d ' { "size": 0, "aggs": { "group_by_state": { "terms": { "field": "A_logtype" } } }

crm使用FetchXml分组聚合查询

/* 创建者:菜刀居士的博客 * 创建日期:2014年07月09号 */ namespace Net.CRM.FetchXml { using System; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Query; /// <summary> /// 使用FetchXml聚合查询,分组依据 /// </summary> public class FetchXmlExtension { /// <summary> /

mongodb 分组聚合查询

MongoDB,分组,聚合 使用聚合,db.集合名.aggregate- 而不是find 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数.MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理.管道操作是可以重复的. 每一个操作符(集合)都会接受一连串的文档,对这些文档做一些类型转换,最后将转换后的文档作为结果传递给下一个操作符,对于最后一个操作符,是将结果返回给客户端 //分组(这里制定了分组字段 $+字段名)//这里可以理解为

浅析MySQL使用 GROUP BY 分组聚合与细分聚合

1. 聚合函数(Aggregate Function) MySQL(5.7 ) 官方文档中给出的聚合函数列表(图片)如下: 详情点击https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html . 除非另有说明,否则聚合函数都会忽略空值(NULL values). 2. 聚合函数的使用 聚合函数通常对 GROUP BY 语句进行分组后的每个分组起作用,即,如果在查询语句中不使用 GROUP BY 对结果集分组,则聚合函数就对结果集

窗口聚合函数与分组聚合函数的异同

窗口聚合函数与分组聚合函数的功能是相同的:唯一不同的是,分组聚合函数通过分组查询来进行,而窗口聚合函数通过OVER子句定义的窗口来进行. --<T-SQL性能调优秘笈---基于SQL Server2012窗口函数>2.1.1窗口聚合函数描述

分页,sql分组聚合

分页 SELECT TOP 页大小 * FROM    (        SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1    )   as A  WHERE RowNumber > 页大小*(页数-1) 分组聚合 create table tb(id int, value varchar(10))insert into tb values(1, 'aa')insert into tb values(1, 'bb

Dubbo -- 系统学习 笔记 -- 示例 -- 分组聚合

Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 分组聚合 按组合并返回结果,比如菜单服务,接口一样,但有多种实现,用group区分,现在消费方需从每种group中调用一次返回结果,合并结果返回,这样就可以实现聚合菜单项. 从2.1.0版本开始支持 配置如:(搜索所有分组) <dubbo:reference interface="com.xxx.MenuService" group="*" m

Oracle(零)--&gt; 伪列和分组聚合(Oracle 开篇,比较初级啦~)

   写在开篇~    不知不觉已然到了开学的时候,毕竟这个大三连暑假还不知道是什么就上岗了,看着周围同学秀的简直飞起 =.= 扯淡扯多了,再扯一句..大三的时候学的 Oracle ,但是现在一想竟然不觉得有何内容,而且触发器,存储过程老师也没有教过,自己也没有看过,实在...毕竟华为工程师说的那句话还是依稀在眼前..不管怎么样,先搞明白是何物,以后才在项目中知道该如何去使用.本流程基本按学习过程中 PPT 来走的,而再往前的东西概念太多,大家又不是很喜欢字,都爱看图嘛~视频就算了,太刺激了都受

Solr分组聚合查询之Facet

摘要: Solr的分组聚合是一个笼统的概念,目的就是把查询结果做分类,有多种方式可以做到很类似的结果.也正是由于它们的不同表现,可以适合于多种场景. 何为Facet Facet是一种手段,用来将搜索结果分类,它并不会修改查询结果信息,只是给分类后的结果加上了每一项的数量值.我们可以用facet来做导航栏,引导用户更精确地查找信息. 一般参数 参数 说明 facet 布尔值,设置为true,表示开启facet facet.query 指定查询语句 facet 布尔值,默认为空,只有设置为true,