MySQL查找(分组查询)

public class Demo1 {
    public static void main(String[] args) {
        /*group by 的使用
         (1)显示 每种岗位的雇员总数 平均工资
        * select count(*),avg(sal),job from emp group by job;
        *2.显示雇员总数,以及获得补助的雇员数
        select count(*),count(comm) from emp;
         思考: 统计没有获得补助的雇员数
          select count(*),count(if(comm is null,1,null))  表示若comm为空,返回1,不为空返回0
          from emp;
        *3.显示管理员的总人数
        select count(distinct mgr) from emp;
        * 4.显示雇员工资的最大差额
        select max(sal)-min(sal) from emp;

having 子句是对分组后的语句进行判断
where 子句是对分组前的语句进行判断


limit 用来限制起始行,总行数(起始行从0开始)

        总结:
        如果select语句中 同时包含有where, group by ,having,limit ,order by
        name他们的顺序是 group by,having ,order by,
        例:统计各个部门 group by 的平均工资(avg),并且要大于1000的(having),
        并且按照平均工资从高到低排序(order by),取出两行记录(limit)
  select deptno ,avg(sal) from emp
   group by deptno having avg_sal>1000 order by avg_sal desc limit 0,2;

        * */
        //1.增强 group by的使用
        //(1)显示每种岗位的雇员人数,平均工资
//select count(*) ,avg(sal) ,job from emp group by job;

        //(2)显示雇员总数,以及获得补助的雇员数    注意:count(列)  如果该列的值为null,是不会统计进去的
//select count(*) count(comm) from emp ;
        //拓展: 统计没有获得补助的人数
//select  count(if(comm is null,1,null)) from emp ;

        //(3)显示管理者的总人数
//select count(distinct mgr) from emp;    distinct  去重
        //(4)显示雇员工资的最大差额
//select max(sal)-min(sal) from emp;

        //顺序不能乱放
        //例:统计各个部门(group by)的平均工资 AVG,并且是大于1000的(having),并且按照从高到低排序(order by),取出前两行记录(limit)
//select deptno ,avg(sal) as avg_sal from emp group by deptno having avg_sal > 1000 order by avg_sal desc limit 0,2;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值