Mysql统计查询 |
您所在的位置:网站首页 › 上海每月工作天数统计查询 › Mysql统计查询 |
1、单字段分组查询(group by)
1.1、查询出每个部门的人数:
SELECT
字段名 AS '部门编号',
COUNT(字段名) AS '人数'
FROM
表名
GROUP BY
字段名
分析: 由于要统计部门名称所以要和部门表进行关联,既然要统计部门就要以部门表为主,所以要右连接,在算平均值的可能会出现小数点多的情况,所以用了round函数保留了两位小数,由于40部门下没有人,也就没有平均工资所以会出现空的情况,用IFUNLL函数,如果为空显示0; SELECT d.DNAME AS '部门名称', COUNT(e.DEPTNO) AS '部门人数', IFNULL(ROUND(AVG(e.SAL),2),0) AS '平均工资' FROM emp e -- 员工表 RIGHT JOIN dept d -- 部门表 ON(e.DEPTNO = d.DEPTNO) GROUP BY e.DEPTNO; 在很多时候往往需要对分组之后的数据进行再次过滤,例如:要求部门人数超过5个人的部门信息,这样的操作首先要按照部门进行分组统计,而后子通过统计结果进行数据过滤,想要实现这样的功能,只能通过HAVING语句来完成。 having一般和group一起使用,分组后的两次筛选 3.1、查询出所有平均工资大于2000的部门信息、平均工资、员工人数。 SELECT JOB AS '职位', AVG(SAL) AS '平均工资', COUNT(JOB) AS '员工人数' FROM emp GROUP BY JOB HAVING AVG(SAL) > 2000;分析:先找出人数大于2人的部门。再按照要求显示: SELECT d.DNAME AS '部门名称', d.DEPTNO AS '部门编号', COUNT(e.DEPTNO) AS '部门人数' FROM emp e RIGHT JOIN dept d ON (e.DEPTNO = d.DEPTNO) GROUP BY d.DEPTNO HAVING COUNT(e.DEPTNO);
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |