数据来源于达梦数据库安装实例时的示例库DMHR
一 分组函数
分组函数做用于一组数据、并对于一组数据返回一个值
常见的分组函数:(聚合函数)
AYG、COUNT、MAX、MIN、SUM...
select column from table group by column
例如:
使用||连接字段
二 过滤分组
使用HAVING过来分组:
1、行已经被分组
2、使用了组函数
3、满足HAVING子句中条件的分组将被显示
having 相当于where 但where是针对某个列,而HAVING针对的是分组后某个值,并且需要配合group by 聚合函数使用
cube 和roolup
cube常用于统计分析,主要用于对分组列以及分区列的所有子集进行分组,输出所有分组结果。
通常配合group by使用,having也可以
举例:
rollup
只对左侧第一个列分组进行合计
连接查询
内连接/外连接
在内连接中只返回满足连接条件的数据
语法:cross join/nature join/join table2 using(column_name)/join table2 on (table1.column_name=table2.column_name)
常见用法:
select a.EMPLOYEE_ID, a.EMPLOYEE_NAME, a.DEPARTMENT_ID, b.DEPARTMENT_NAME
from dmhr.employee a join dmhr.department b
on a.DEPARTMENT_ID = b.DEPARTMENT_ID;
外连接:两个表在连接过程中除了返回满足连接条件的行以外还返回左或者右表中不满足条件的行,这种连接称为左连接或者右链接
设置值,便于后面进行操作
左外连接:
select a.EMPLOYEE_ID, a.EMPLOYEE_NAME, a.DEPARTMENT_ID, b.DEPARTMENT_NAME
from dmhr.employee a left join dmhr.department b
on a.DEPARTMENT_ID = b.DEPARTMENT_ID;
右外连接
insert into dmhr.DEPARTMENT(DEPARTMENT_ID, DEPARTMENT_NAME)
values(999999, 'TEST');
commit;
插入数据,方便操作
上图是插入数据后的左连接,但是没有显示
右连接后,就有数据。如果是左关联会显示左关联表的全部信息,如果是右关联则是右表的全部信息
count
上图中是count(a.employee_id)显示的是0
如果count(*):
全外连接:
两个表在连接过程中除了返回满足连接条件的行以外还返回两个左或者右表中不满足条件的行
全部信息都显示了