Oracle_SQL_group_by Oracle SQL group by 分组函数的用法总结
需要在Oracle中用group by语句,发现有些理解并不是太到位。
翻看自己总结的Informix数据库关于group by的使用注意事项,发现跟Oracle是一样的。
同时google一下网上其他人的总结,发现有些总结并不到位。
例如1:http://hi.baidu.com/ws528/blog/item/ded717d9236c412b11df9baa.html 中写到:”
只要字段不带有聚合函数的都要加入到group by 的字段中“。
这个原则是对的,但是没有说到实质内容,仅仅形式上对了。
例如2:http://blog.csdn.net/zhaozhongju/archive/2009/05/13/4177047.aspx 中写到:”Group By子句与Where子句是不兼容的“。
这本身是个错误。不过如果永远不在group by中写where是不会出错的哦~
group by 总结
例子:
select order_num, sum(total_price)
from items
where order_num > 1018 and quantity >
2
group by order_num
having order_num > 1012 and
sum(total_price) > 1000.0
;
形式:
select clm_a, clm_b, … , FUNK_A(clm_x)
from tbl_x
where clm_y… clm_z…
group by clm_a, clm_b, …
having clm_a… or FUNK_A(xxx)=…
order by group_column
总结:
过程:
select *
where
-->> group + function
-->> having
(
1
)
select
+
where
选出要进行处理的行;where中的列不受group中的列限制;
(
2
)
group
by 条件确定可以
group
的行,这些行之后将要用统计函数
FUNK_A
统计这些行
(
3
)
group
操作使得可
group
的行仅仅显示一行,并用统计函数分组统计
(
4
)
having
条件对group结果进行条件过滤
如同
where
对select的结果过滤一样;
不可用别名
(
5
) order by 条件必须是group中存在的;如果有having则order by必须放在having之后
;
注意:
(
1
)
select
中的列
是
group
中的列
的子集(
select
后写的列必须在
group
中出现),但不包括分组函数
(
2
)因为初选时用
*
,所以
where
中可以出现任何列,统计函数中也可以出现任何列
(
3
)
having
是在
group
之后进行的,所以
having
出现时必须有
group
,同时
having
中的列必须在
select
中出现
;
同时不能用列的别名
分享到:
相关推荐
5. 关系运算符和查询:掌握SELECT语句,包括WHERE子句、JOIN操作(内连接、外连接)、聚合函数(COUNT, SUM, AVG, MAX, MIN)以及分组(GROUP BY)和排序(ORDER BY)。 6. 存储过程和触发器:了解如何编写存储过程...
本文档总结了 DB2 数据库的基础知识点,包括数据库连接、表结构查看、索引查看、查询语句、函数使用、统计函数、排序、分组等。 一、数据库连接 在 DB2 中,连接数据库使用以下命令:db2 connect to 数据库名; 二...
分组(Group By)用于根据指定字段对数据进行分类汇总;排序(Order By)则按照指定字段对结果进行排序。 #### 四、数据库对象的操作 **1. 数据库** - **创建(Create Database):** 创建新的数据库实例。 - **删除...
- KingbaseES对 `GROUP BY` 语句的执行更为严格,仅允许选择聚合函数或分组字段。 示例: ```sql SELECT COUNT(*), name FROM test GROUP BY name; ``` 综上所述,从MySQL迁移到人大金仓KingbaseES的过程中,需要...
对于复杂的查询需求,可以利用JOIN操作连接多个表,或者使用GROUP BY和HAVING子句进行分组和条件筛选。 5. **编程与DBClass.cs**:在DBClass.cs中,可能定义了一个名为DBClass的类,用于封装与Access数据库的交互...
学习如何使用`WHERE`子句进行条件筛选,`GROUP BY`和`HAVING`进行分组统计,`JOIN`操作合并多表数据,以及`ORDER BY`进行排序,是提升查询效率的关键。 6. **索引** 索引可以极大地提高查询速度。通过`CREATE ...
SELECT `username` FROM db_member GROUP BY `username` HAVING COUNT(`username`) > 1 ) ``` 这条SQL语句的主要功能是从`db_member`表中筛选出那些用户名(`username`)重复出现的记录。下面我们将逐步解析这条...
更高级的用法包括`GROUP BY`进行分组,`HAVING`对分组后的结果过滤,以及`ORDER BY`进行排序。 3. **聚合函数**:在SQL Zoo中,你会遇到`COUNT()`, `SUM()`, `AVG()`, `MIN()`, 和 `MAX()`这些聚合函数,它们用于对...
例如,通过`SELECT`语句结合`WHERE`子句和`GROUP BY`子句,可以对数据库中的数据进行过滤、分组和聚合分析。 "DB2函数大全"的文本文件很可能是对这些函数的详尽概述,包括它们的语法、参数、返回值以及使用示例。...
6. **分组和窗口函数**:如`GROUP BY`, `RANK()`, `LEAD()`, `LAG()`, 用于复杂的数据分组和分析。 7. **条件函数**:`DECODE()`, `NVL()`, `CASE`, 用于条件判断和空值处理。 8. **连接函数**:`CONNECT_BY_ROOT()`...
- GROUP BY语句用于结合聚合函数(如SUM()、AVG()等)对结果集进行分组。 - 示例:`SELECT department, AVG(salary) FROM employees GROUP BY department;` 2. **HAVING 子句** - HAVING子句用于过滤GROUP BY...
- **分组**:使用GROUP BY子句将查询结果按一个或多个列进行分组,并结合聚合函数使用。 ##### >}}] (第8章:连接查询) - **连接查询**:介绍如何使用JOIN关键字连接两个或多个表来检索数据。 - **INNER JOIN**:...
在Django中,`group_by` 是SQL查询中的一个关键字,用于对数据库查询结果进行分组,通常与聚合函数(如 COUNT, SUM, AVG, MAX, MIN)一起使用,以便对相同字段值的数据进行统计分析。然而,Django ORM(对象关系映射...
- ORDER BY、GROUP BY、HAVING子句的使用方法。 - 动态游标、连接操作、子查询的处理方式。 - UNION和UNION ALL的用法。 - 动态SQL的实现。 - 条件处理、打印输出消息、隐式类型转换等内容。 #### 2. 转换参考 ###...
在教程中,会介绍SQL的基础语法,比如数据查询语句SELECT的基本用法,以及数据定义语句如CREATE TABLE创建新表,还包括数据更新语句UPDATE、INSERT和DELETE的使用方法。 对于初学者来说,学习DB2数据库还必须掌握...
3. **GROUP BY**和**HAVING**:对查询结果进行分组统计,并对分组结果进行筛选。 **Transact-SQL函数** 1. 在查询中应用函数,如查找名字含特定字符的记录,或找出工作年限超过特定值的员工。 **创建和使用索引** ...
具体知识点涵盖了数据库操作、数据表操作、数据查询方法、内置函数应用以及具体的案例分析。 #### 数据库操作 - **创建数据库**: - `CREATE DATABASE [IF NOT EXISTS] db_name [LOCATION 'path'];`:创建数据库...
然而,在使用 `groupBy` 方法时可能会遇到一些问题,特别是当查询语句的 `select` 和 `groupBy` 部分不匹配时,会导致语法错误。这个问题通常会在 MySQL 5.7 及以上版本出现,因为这些版本默认启用了 GROUP BY 严格...
本文将详细介绍如何使用Eloquent模型实现分组查询并返回每个分组的数量,主要涉及`groupBy()`方法。 首先,`groupBy()`方法是SQL查询中的一个关键组成部分,它允许你根据一个或多个字段对查询结果进行分组。在...