• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >oracle > 对oracle中分组函数的一点感悟

对oracle中分组函数的一点感悟

作者:u012736748的博客 字体:[增加 减小] 来源:互联网 时间:2017-08-07

u012736748的博客通过本文主要向大家介绍了oracle,select,函数等相关知识,希望本文的分享对您有所帮助

一、当使用分组函数时,分组函数只能出现在选择列表、order by 和 having 子句中,而不能出现在 where 和 group by 子句中。
另外,使用分组函数还有以下一些注意事项:
1、 当使用分组函数时,除了函数 count(*) 之外,其他分组函数都会忽略 null 行,当然 count(列名) 也会忽略 null 行。
2、 当执行 select 语句时,如果选择列表时包含列、表达式和分组函数,那么这些列和表达式必须出现在 group by 子句中。
3、 当使用分组函数时,在分组函数中可以指定 all 和 distinct 选项。其中 all 是默认选项,该选项表示统计所有行数据(包括重复行);如果指定 distinct,则只会统计不同行值。
4、 Having 是在 group by 语句之后。

二、group by 用于对查询结果进行分组统计,而 having 子句则用于限制分组显示结果。注意,如果在选择列表中同时包含列、表达式和分组函数,那么这些列和表达式必须出现在 group by 子句中。

三、使用 group by 子句、where 子句和分组函数有以下一些注意事项:
1、分组函数只能出现在选择列表、having 子句和 order by 子句中
2、如果在select 语句中同时包含 group by 、having 以及 order by 子句,则必须将 order by 子句放在最后。默认情况下,当使用 group by 子句统计数组时,会自动按照分组列的升序显示统计结果。通过使用 order by 子句,可以改变数据分组的排序方式。
3、如果选择列表包含有列、表达式和分组函数,那么这些列和表达式必须出现在 group by 子句中,否则会显示错误消息。
4、当限制分组显示结果时,必须要使用 having 子句,而不能在 where 子句中使用分组函数限制显示结果,否则会显示错误信息。】

四、关于为什么有些SQL语句需要在 使用where初步过滤后,还需要在后面跟随group by分组语句。

例如:select deptno , avg(sal)
from emp
where deptno=20

这种语句会在oracle中报错,但是在mysql中却不会出现错误。
出错的原因是:在员工表 emp中, 部门号码为20 的员工有好几个,
但是该部门的平均工资只有一个,会出现多对一的现象,从而会报错。

修正后的句子为:
select deptno , avg(sal)
from emp
where deptno=20
group by deptno

该SQL语句与上述语句不同,通过分组,使得部门是20 的员工同在一个组中,而平均工资也是在一个结果,从而是 一对一 所以 该SQL语句可行。
需要特别注意。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Oracle连接远程数据库的四种方法
  • Oracle解析复杂json的方法实例详解
  • Oracle 11g简体中文版安装图文教程
  • Oracle存储过程、包、方法使用总结(推荐)
  • Oracle批量查询、删除、更新使用BULK COLLECT提高效率
  • Oracle 11g 安装配置方法图文教程
  • Oracle 11g安装错误提示未找到wfmlrsvcapp.ear的解决方法
  • oracle创建表空间、授权、创建用户、导入dmp文件
  • Oracle触发器实例代码
  • Oracle数据库的字段约束创建和维护示例

相关文章

  • 2017-05-11查看Oracle的执行计划一句话命令
  • 2017-05-1111g Oracle导出表不导出数据默认为空表的解决方法
  • 2017-05-11实现oracle数据库字段自增长(两种方式)
  • 2017-05-11oracle冷备份恢复和oracle异机恢复使用方法
  • 2017-05-11Oracle ORA-22908(NULL表值的参考)异常分析与解决方法
  • 2017-05-11ORACLE数据库日常维护知识点总结
  • 2017-05-11Linux系统下导出ORACLE数据库出现Exporting questionable statistics.错误 处理
  • 2017-05-11Oracle 簇的使用详解
  • 2017-05-11Oracle常用命令大全集
  • 2017-05-11Oracle PL/SQL入门慨述

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Oracle入侵常用操作命令整理
    • Oracle误删除表数据后的数据恢复详解
    • Oracle 11g Dataguard参数详解
    • rman备份脚本和rman增量备份脚本分享
    • oracle中distinct的用法详解
    • Oracle 中文字段进行排序的sql语句
    • Oracle最大日期获取方法
    • Oracle监听器服务不能启动的解决方法
    • Oracle 11g2的监听器配置教程
    • oracle中decode函数的使用方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有