博客
关于我
MySQL学习-排序与分组函数
阅读量:789 次
发布时间: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学习总结(26)——MySQL子查询
    查看>>
    Mysql学习总结(27)——Mysql数据库字符串函数
    查看>>
    Mysql学习总结(28)——MySQL建表规范与常见问题
    查看>>
    Mysql学习总结(29)——MySQL中CHAR和VARCHAR
    查看>>
    Mysql学习总结(2)——Mysql超详细Window安装教程
    查看>>
    Mysql学习总结(30)——MySQL 索引详解大全
    查看>>
    Mysql学习总结(31)——MySql使用建议,尽量避免这些问题
    查看>>
    Mysql学习总结(32)——MySQL分页技术详解
    查看>>
    Mysql学习总结(33)——阿里云centos配置MySQL主从复制
    查看>>
    Mysql学习总结(34)——Mysql 彻底解决中文乱码的问题
    查看>>
    Mysql学习总结(35)——Mysql两千万数据优化及迁移
    查看>>
    Mysql学习总结(36)——Mysql查询优化
    查看>>
    Mysql学习总结(37)——Mysql Limit 分页查询优化
    查看>>
    Mysql学习总结(38)——21条MySql性能优化经验
    查看>>
    Mysql学习总结(39)——49条MySql语句优化技巧
    查看>>
    Mysql学习总结(3)——MySql语句大全:创建、授权、查询、修改等
    查看>>
    Mysql学习总结(40)——MySql之Select用法汇总
    查看>>
    Mysql学习总结(41)——MySql数据库基本语句再体会
    查看>>
    Mysql学习总结(42)——MySql常用脚本大全
    查看>>
    Mysql学习总结(43)——MySQL主从复制详细配置
    查看>>