zoukankan      html  css  js  c++  java
  • 14 分组函数?

    14 分组函数?
        count 计数
        sum 求和
        avg 平均值
        max 最大值
        min 最小值
        
        记住:所有的分组函数都是对“某一组”数据进行操作的。
        
        找出工资总和?
            select sum(sal) from emp;
                +----------+
                | sum(sal) |
                +----------+
                | 29025.00 |
                +----------+
        
        找出最高工资?
            select empno,ename,max(sal) from emp;
                +-------+-------+----------+
                | empno | ename | max(sal) |
                +-------+-------+----------+
                |  7369 | SMITH |  5000.00 |
                +-------+-------+----------+
                
        找出最低工资?
            select empno,ename,min(sal) from emp;
                +-------+-------+----------+
                | empno | ename | min(sal) |
                +-------+-------+----------+
                |  7369 | SMITH |   800.00 |
                +-------+-------+----------+
                
        找出平均工资?
            select round(avg(sal),2) from emp;
                +-------------------+
                | round(avg(sal),2) |
                +-------------------+
                |           2073.21 |
                +-------------------+
                
        找出总人数?
            select count(empno) from emp;
                +--------------+
                | count(empno) |
                +--------------+
                |           14 |
                +--------------+
                
        分组函数一共有5个,分组函数还有另一个名字:多行处理函数。
        多行处理函数的特点:输入多行,最终输出结果是一行。
        
        分组函数自动忽略null。
            select count(comm) from emp;
                +-------------+
                | count(comm) |
                +-------------+
                |           4 |
                +-------------+
                
            select sum(comm) from emp where comm is not null;// 不需要额外添加这个过滤条件。sum函数自动忽略null。
            
            找出工资高于平均工资的员工?
                select avg(sal) from emp; // 平均工资
                    +-------------+
                    | avg(sal)    |
                    +-------------+
                    | 2073.214286 |
                    +-------------+
                
                select ename,sal from emp where sal > avg(sal);// ERROR 1111 (HY000): Invalid use of group function
                思考以上的错误信息:无效的使用了分组函数?
                    原因:sql语句当中有一个语法规则,分组函数不可直接使用在where子句当中。why???
                    怎么解释?
                        因为group by是在where执行之后才会执行的。
                        
                    select
                        ...    5
                    from
                        ...    1
                    where
                        ...    2
                    group by
                        ...    3
                    having
                        ...    4
                    order by
                        ... 6
                    
                count(*) 和 count(具体的某个字段),他们有什么区别?
                
                找出工资高于平均工资的员工?
                    第一步:找出平均工资
                        select avg(sal) from emp;
                            +-------------+
                            | avg(sal)    |
                            +-------------+
                            | 2073.214286 |
                            +-------------+
                    第二步:找出高于平均工资的员工
                        select ename,sal from emp where sal > 2073.214286;
                        +-------+---------+
                        | ename | sal     |
                        +-------+---------+
                        | JONES | 2975.00 |
                        | BLAKE | 2850.00 |
                        | CLARK | 2450.00 |
                        | SCOTT | 3000.00 |
                        | KING  | 5000.00 |
                        | FORD  | 3000.00 |
                        +-------+---------+
                
                子查询:
                select ename,sal from emp where sal > (select avg(sal) from emp);
                    +-------+---------+
                    | ename | sal     |
                    +-------+---------+
                    | JONES | 2975.00 |
                    | BLAKE | 2850.00 |
                    | CLARK | 2450.00 |
                    | SCOTT | 3000.00 |
                    | KING  | 5000.00 |
                    | FORD  | 3000.00 |
                    +-------+---------+
  • 相关阅读:
    android http多请求异步封装对你绝对有用
    浅论Android网络请求库——android-async-http
    Android Http异步请求,Callback
    STL慎重选择删除元素的
    iOS开展
    【Bootstrap】兼容IE8、谷歌和其他主流浏览器的观众IMAX风格的页面
    Codeforces #180 div2 C Parity Game
    vS2010 列表控件 加入右键菜单
    cocos2d-x 3.2 2048——第六部分(最后一章)
    E: 无法获取锁 /var/lib/apt/lists/lock
  • 原文地址:https://www.cnblogs.com/xlwu/p/13639518.html
Copyright © 2011-2022 走看看