数据库学习(4)

1. group by 之后 select 中只能出现分组后的整体信息,不能出现组内详细信息

2. select deptno, job, AVG(sal), COUNT(*), SUM(sal), MIN(sal) from emp

group by deptno, job

order by deptno

PS: group by a, b, c

这个分组是按照a, b, c三个组合分组的

3. having ——  对分组之后的信息过滤

聚合函数 —— 多行记录返回一个值,通常用于统计分组的信息

4. from emp where sal > 2000 --where是对原始的记录过滤

group by deptno having AVG(sal)>3000  --对分组之后的记录过滤

PS: 所有 select 的参数的顺序是不允许变化的,否则编译时出错

5. having 和 where的异同:

相同点:

都是对数据过滤,只保留有效的数据

where 和 having 一样,都不允许出现字段的别名

不同点:

where 是对原始的记录过滤,having是对分组之后的数据过滤

where必须写在having前面,顺序不可颠倒,否则运行出错

6. 不允许在 where 中使用分组函数实例,所以先执行 where时对emo表还没有进行分组因此编译时会报错

select deptno, AVG(sal) from emp where AVG(sal)>2000 group by deptno

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 1,764评论 0 2
  • 引出 •请思考如下问题? –查询所有员工的每个月工资总和,平均工资? –查询工资最高和最低的工资是多少? –查询公...
    C_cole阅读 7,316评论 0 3
  • 目标 聚合函数 分组函数 子查询 多行子查询 引出 •请思考如下问题? –查询所有员工的每个月工资总和,平均工资?...
    wqjcarnation阅读 4,165评论 0 6
  • 5.多表查询 多表查询 目的:从多张表获取数据 前提:进行连接的多张表中有共同的列 等连接 通过两个表具有相同意义...
    乔震阅读 1,291评论 0 0
  • 001 想清楚了么? 你是否经常不确定自己想要什么?经常质疑自己的生活与选择?你是否时而奋斗,时而颓废?你是否并不...
    雯_wen阅读 283评论 0 0