• 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 |
                    +-------+---------+
  • 相关阅读:
    To do list
    Spring Boot学习总结(4)——使用Springloaded进行热部署
    App后台开发运维和架构实践学习总结(2)——RESTful API设计技巧
    程序员如何成为编程高手并以此创业
    小米宋强:生态化大数据平台的深度应用实践
    Tomcat学习总结(9)——Apache Tomcat 8新特性
    Mysql学习总结(41)——MySql数据库基本语句再体会
    Git学习总结(13)——使用git.oschina作为自己的源代码在线管理库
    将学习养成习惯
    Java基础学习总结(71)——深入理解Java虚拟机内存
  • 原文地址:https://www.cnblogs.com/xlwu/p/13639518.html
Copyright © 2020-2023  润新知