在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总信息。
使用having子句 限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。
在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数 select max(sal),job emp group by job; (注意max(sal),job的job并非一定要出现,但有意义) 查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数。 select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno; 当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句。having 与where 子句类似,均用于设置限定条件 where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚合函数,使用where条件显示特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚合函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。
使用order by排序时order by子句置于group by 之后 并且 order by 子句的排序标准不能出现在select查询之外的列。
查询每个部门的每种职位的雇员数
select deptno,job,count(*) from emp group by deptno,job
/****************************************************************
记住这就行了:
在使用group by 时,有一个规则需要遵守,即出现在select列表中的字段,如果没有在组函数中,那么必须出现在group by 子句中。(select中的字段不可以单独出现,必须出现在group语句中或者在组函数中。)
列如表内容:
id content idplace
1 2009-06-05 上海
1 2009-07-05 广州
2 2009-07-08 北京
3 2009-08-10 北京
要得到的结果
id content idplace
1 2009-06-05 上海
2 2009-07-08 北京
3 2009-08-10 北京
每个id只取一条记录,如遇到相同id的记录,筛选依据是选content字段值小的
select
*
from
tb t
where
not exists(select 1 from tb where id=t.id and content<t.content)
select * from tb t where not exists(select 1 from tb where id=t.id and content<t.content)
select
*
from
tb t
where
content=(select top 1 content from tb where id=t.id order by content)
select * from tb t where content=(select min(content) from tb where id=t.id )
select
*
from
tb t
where
content in (select top 1 content from tb where id=t.id order by content )
转至 http://www.cnblogs.com/wanggd/p/3512214.html
分享到:
相关推荐
在Oracle数据库中,`GROUP BY`子句是一个关键的SQL元素,它允许用户根据一个或多个列的值将数据分组,以便对每个组进行聚合计算。以下是对`GROUP BY`用法的详细解释和规则: 1. **基本用法**: `GROUP BY`子句通常...
下面我们将详细讨论`GROUP BY`的使用方法及其相关知识点。 1. **`GROUP BY`的基本概念** `GROUP BY`关键字用于将数据表中的数据根据一个或多个列的值进行分组。通过分组,你可以对每个组应用聚合函数,这有助于...
本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法。分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY...
综上所述,`GROUP BY`和`HAVING`在Oracle数据库中是用于数据统计和分析的重要工具,正确理解并掌握它们的用法对于编写有效的SQL查询至关重要。通过合理运用这两者,数据库管理员可以生成满足各种复杂业务需求的报表...
通过阅读7_22.sql、7_21.sql、7_20.sql这三个文件,我们可以看到实际的SQL语句示例,这些示例可能展示了GROUP BY的不同用法和限制,包括如何正确地处理分组、聚合以及如何在实践中避免常见的错误。通过对这些文件的...
本文将深入探讨`ORDER BY`子句在Oracle中的排序机制,以及查询时根据`IN`条件顺序输出的方法。 首先,`ORDER BY`用于指定查询结果的排序方式,可以基于一个或多个列进行升序(ASC)或降序(DESC)排序。然而,...
在SQL查询中,`order_by_`、`group_by_`和`having`是三个非常重要的关键字,它们分别用于不同的数据处理操作。 1. `ORDER BY`:此关键字用于对查询结果进行排序,默认是升序(ASC),也可以指定降序(DESC)。在`...
Oracle中的`GROUP BY`语句是SQL查询中的关键部分,用于根据一个或多个列对数据进行分组,以便对每个组执行聚合函数,如`SUM`、`COUNT`、`AVG`等。在本例中,我们看到的`GROUP BY`语句是用来对`test`表中的数据进行...
优化`DISTINCT`的一种方法是使用`GROUP BY`子句,它可以将相同的数据分组,然后对每个组进行聚合操作,例如计算数量或求和。在某些情况下,可以将`DISTINCT`转换为`GROUP BY`,并结合聚合函数如`COUNT()`,以达到...
在本实例中,使用了设置索引的方法来优化查询速度。 知识点8:总结和经验 通过本实例,我们可以总结出一些有价值的经验:在优化 Group By 查询时,需要将聚合函数用到的字段一起设置为联合索引;需要充分测试和...
Oracle作为全球广泛使用的大型关系型数据库管理系统,其10g版本在功能和性能上都有显著提升,为开发者提供了更强大的工具和更高效的解决方案。 在Oracle10g中,SQL语言仍然是核心,它允许我们查询、更新、插入和...
本篇文章将详细介绍Oracle中实现多行记录合并的几种方法,包括使用SQL函数、集合操作以及自定义函数。 1. **使用SQL函数:** - **`LISTAGG()` 函数:** 这是Oracle 11g及以后版本引入的一个强大的聚合函数,专门...
本文介绍了两种在Oracle数据库中去除重复数据的方法:一是通过子查询实现,二是利用窗口函数`ROW_NUMBER()`。这两种方法各有优劣: - **子查询方法**适用于大多数Oracle版本,但可能不够直观,尤其是在处理复杂数据...
总结来说,在SQL中使用Group By子句实现除法运算需要一些额外的技巧,比如子查询、窗口函数和case表达式。这些方法可以针对不同的数据处理需求来灵活运用。尽管在简单的分组聚合中Group By子句非常强大,但在涉及更...
下面我们将深入探讨`GROUP BY`语句的使用方法及其相关知识点。 首先,`GROUP BY`语句的基本结构是这样的: ```sql SELECT column1, column2, ..., aggregate_function(column_name) FROM table_name WHERE ...
通过熟练掌握这些高级GROUP BY用法,我们可以编写出更复杂、更高效的SQL查询,以满足业务需求。 在提供的"聚合函数-建表数据.sql"文件中,可能包含了用于演示这些概念的示例数据和建表脚本。运行这个脚本后,你可以...
当与`GROUP BY`一起使用时,聚合函数可以对每个分组执行计算,例如计算每个分组中的记录数量、求和、平均值等。 **示例1:使用COUNT()** ``` SELECT name, COUNT(*) FROM test GROUP BY name; ``` 这个查询将返回...