MySql自字段、聚合和分组知识点

上传人:平*** 文档编号:13353055 上传时间:2017-10-23 格式:DOC 页数:3 大小:79.27KB
返回 下载 相关 举报
MySql自字段、聚合和分组知识点_第1页
第1页 / 共3页
MySql自字段、聚合和分组知识点_第2页
第2页 / 共3页
MySql自字段、聚合和分组知识点_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《MySql自字段、聚合和分组知识点》由会员分享,可在线阅读,更多相关《MySql自字段、聚合和分组知识点(3页珍藏版)》请在金锄头文库上搜索。

1、MySQL 字段控制、聚合和分组1 字段控制查询1.1去除重复记录去除重复记录(两行或两行以上记录中系列的上的数据都相同) ,例如 emp 表中 sal 字段就存在相同的记录。当只查询 emp 表的 sal 字段时,那么会出现重复记录,那么想去除重复记录,需要使用DISTINCT:SELECT DISTINCT sal FROM emp;1.2查看雇员的月薪与佣金之和因为 sal 和 comm 两列的类型都是数值类型,所以可以做加运算。如果 sal 或 comm 中有一个字段不是数值类型,那么会出错。SELECT *,sal+comm FROM emp;comm 列有很多记录的值为 NULL,

2、因为任何东西与 NULL 相加结果还是 NULL,所以结算结果可能会出现 NULL。下面使用了把 NULL 转换成数值 0 的函数 IFNULL:SELECT *,sal+IFNULL(comm,0) FROM emp;1.3给列名添加别名在上面查询中出现列名为 sal+IFNULL(comm,0),这很不美观,现在我们给这一列给出一个别名,为total:SELECT *, sal+IFNULL(comm,0) AS total FROM emp;给列起别名时,是可以省略 AS 关键字的:SELECT *,sal+IFNULL(comm,0) total FROM emp;2 聚合函数聚合函数

3、是用来做纵向运算的函数: COUNT():统计指定列不为 NULL 的记录行数; MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算; MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算; SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为 0; AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为 0;2.1COUNT当需要纵向统计时可以使用 COUNT()。 查询 emp 表中记录数:SELECT COUNT(*) AS cnt FROM emp; 查询 emp 表中有佣金的人数:SELE

4、CT COUNT(comm) cnt FROM emp;注意,因为 count()函数中给出的是 comm 列,那么只统计 comm 列非 NULL 的行数。 查询 emp 表中月薪大于 2500 的人数:SELECT COUNT(*) FROM empWHERE sal 2500; 统计月薪与佣金之和大于 2500 元的人数:SELECT COUNT(*) AS cnt FROM emp WHERE sal+IFNULL(comm,0) 2500; 查询有佣金的人数,以及有领导的人数:SELECT COUNT(comm), COUNT(mgr) FROM emp;2.2SUM 和 AVG当需

5、要纵向求和时使用 sum()函数。 查询所有雇员月薪和:SELECT SUM(sal) FROM emp; 查询所有雇员月薪和,以及所有雇员佣金和:SELECT SUM(sal), SUM(comm) FROM emp; 查询所有雇员月薪+ 佣金和:SELECT SUM(sal+IFNULL(comm,0) FROM emp; 统计所有员工平均工资:SELECT SUM(sal), COUNT(sal) FROM emp;或者SELECT AVG(sal) FROM emp;2.3MAX 和 MIN 查询最高工资和最低工资:SELECT MAX(sal), MIN(sal) FROM emp;

6、3 分组查询当需要分组查询时需要使用 GROUP BY 子句,例如查询每个部门的工资和,这说明要使用部分来分组。3.1分组查询 查询每个部门的部门编号和每个部门的工资和:SELECT deptno, SUM(sal)FROM empGROUP BY deptno; 查询每个部门的部门编号以及每个部门的人数:SELECT deptno,COUNT(*)FROM empGROUP BY deptno; 查询每个部门的部门编号以及每个部门工资大于 1500 的人数:SELECT deptno,COUNT(*)FROM empWHERE sal1500GROUP BY deptno;3.2HAVING 子句 查询工资总和大于 9000 的部门编号以及工资和:SELECT deptno, SUM(sal)FROM empGROUP BY deptnoHAVING SUM(sal) 9000;注意,WHERE 是对分组前记录的条件,如果某行记录没有满足 WHERE 子句的条件,那么这行记录不会参加分组;而 HAVING 是对分组后数据的约束。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号