博客
关于我
MySQL学习-排序与分组函数
阅读量:798 次
发布时间:2023-02-12

本文共 3895 字,大约阅读时间需要 12 分钟。

MySQL 查询操作及数据分析实例

1. 数据表结构与数据展示

以下是MySQL数据库中的emp表结构及其数据展示:

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 1980-12-17 800.00 NULL 20
7499 ALLEN SALESMAN 7698 1981-02-20 1600.00 300.00 30

字段分别为:员工编号、员工姓名、员工职位、员工上级领导编号、员工雇佣日期、员工薪水、员工津贴、员工部门编号。


2. 数据排序

2.1 按工资升序查询员工名和薪资

select ename, sal from emp order by sal;

结果如下:

ename sal
SMITH 800.00
JAMES 950.00

2.2 按工资降序查询员工名和薪资

select ename, sal from emp order by sal desc;

结果如下:

ename sal
KING 5000.00
SCOTT 3000.00

2.3 按工资和姓名同时排序

select ename, sal from emp order by sal desc, ename asc;

结果如下:

ename sal
KING 5000.00
FORD 3000.00

3. 分组函数

3.1 计算工资总和

select sum(sal) from emp;

结果:

sum(sal)
29025.00

3.2 找出最高工资

select max(sal) from emp;

结果:

max(sal)
5000.00

3.3 找出最低工资

select min(sal) from emp;

结果:

min(sal)
800.00

3.4 计算平均工资

select avg(sal) from emp;

结果:

avg(sal)
2073.214286

3.5 找出总人数

select count(*) from emp;

结果:

count(*)
14

3.6 统计津贴不为NULL的员工数量

select count(comm) from emp;

结果:

count(comm)
4

3.7 计算所有员工的总津贴

select sum(comm) from emp;

结果:

sum(comm)
2200.00

3.8 计算部门内员工数量(假设DEPTNO为数字值)

select count(*) from emp where deptno = 20;

结果:

count(*)
7

3.9 组合分组函数

select count(*), sum(sal), avg(sal), max(sal), min(sal) from emp;

结果如下:

count(*) sum(sal) avg(sal) max(sal) min(sal)
14 29025.00 2073.214286 5000.00 800.00

4. 常见问题解答

4.1 为什么直接在WHERE子句中使用分组函数会报错?

当直接在WHERE子句中使用分组函数时,会因为分组函数的执行顺序问题导致错误。分组函数必须在GROUP BY子句中明确声明。正确的做法是:

select ename, sal from emp where sal > (select avg(sal) from emp);

4.2 如何处理包含NULL值的计算

使用ifnull()函数可以处理NULL值。例如:

select ename, ifnull(comm, 0) as comm from emp;

结果如下:

ename comm
SMITH 0.00

4.3 如何计算每个员工的年薪(假设年薪=月薪×12)

select ename, (sal + ifnull(comm, 0)) * 12 as yearsal from emp;

结果如下:

ename yearsal
SMITH 9600.00

5. 注意事项

  • 排序字段优先级:在多个排序字段时,前面的字段具有更高的优先级。
  • 分组函数执行顺序:GROUP BY必须在WHERE子句之后执行。
  • 分组函数与NULL处理:所有分组函数都自动忽略NULL值。
  • 子查询的正确使用:在需要嵌套查询时,确保子查询的逻辑正确。
  • 通过以上示例,可以更好地理解和应用MySQL数据库中的查询操作和数据分析功能。

    转载地址:http://qrbfk.baihongyu.com/

    你可能感兴趣的文章
    mysql面试题:高度为3的B+树可以存放多少数据?
    查看>>
    mysql颠覆实战笔记(八)--mysql的自定义异常处理怎么破
    查看>>
    mysql驱动、durid、mybatis之间的关系
    查看>>
    mysql驱动支持中文_mysql 驱动包-Go语言中文社区
    查看>>
    MySQL高可用之——keepalived+互为主从
    查看>>
    MySQL高可用切换_(5.9)mysql高可用系列——正常主从切换测试
    查看>>
    MySQL高可用解决方案
    查看>>
    MySQL高可用解决方案详解
    查看>>
    MYSQL高可用集群MHA架构
    查看>>
    MySQL高可用集群架构MHA企业级实战
    查看>>
    MySQL高级-MySQL存储引擎
    查看>>
    MySQL高级-MySQL并发参数调整
    查看>>
    MySQL高级-MySQL应用优化
    查看>>
    MySQL高级-MySQL查询缓存优化
    查看>>
    MySQL高级-MySQL锁
    查看>>
    MySQL高级-SQL优化
    查看>>
    MySQL高级-SQL优化步骤
    查看>>
    MySQL高级-内存管理及优化
    查看>>
    MySQL高级-存储过程和函数
    查看>>
    MySQL高级-索引
    查看>>