热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

计算各职位类型员工的平均薪资并按升序排列

本文介绍如何通过SQL查询来统计不同职位类型的员工当前薪资的平均值,并将结果按照平均薪资升序排列。

背景介绍

在数据库管理中,了解不同职位类型的员工薪资水平是人力资源分析的重要部分。通过SQL查询,我们可以有效地获取这些信息,帮助决策者做出更加合理的薪酬调整和预算规划。

数据表结构

本示例涉及两个数据表:员工职称表(titles)和薪水表(salaries)。这两个表的结构如下所示:

员工职称表(titles):

CREATE TABLE titles ( emp_no int(11) NOT NULL, title varchar(50) NOT NULL, from_date date NOT NULL, to_date date DEFAULT NULL );

薪水表(salaries):

CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL, `salary` int(11) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL, PRIMARY KEY (`emp_no`,`from_date`) );

其中,emp_no表示员工编号,title表示职位名称,salary表示薪资金额,from_dateto_date分别表示记录的有效起止日期。

查询实现

为了计算每个职位类型的平均薪资,我们需要将两个表进行连接,并筛选出当前有效的薪资记录(即to_date = '9999-01-01'),然后根据职位分组并计算平均薪资。最后,将结果按照平均薪资升序排列。具体的SQL查询语句如下:

SELECT t.title, AVG(s.salary) AS average_salary FROM titles t JOIN salaries s ON t.emp_no = s.emp_no WHERE t.to_date = '9999-01-01' AND s.to_date = '9999-01-01' GROUP BY t.title ORDER BY average_salary ASC;

此查询首先通过JOIN操作将titlessalaries表连接起来,确保我们处理的是当前有效的职位和薪资记录。接着,使用GROUP BY对不同的职位进行分组,并使用AVG()函数计算每个职位的平均薪资。最后,使用ORDER BY按平均薪资的升序对结果进行排序。

执行结果

执行上述SQL查询后,你将获得一个列表,该列表显示了每个职位类型的名称及其对应的平均薪资,列表按照平均薪资从低到高排序。例如:

提交结果表明,该查询能够准确地返回所需的数据,运行时间为14ms,占用内存为3324KB,使用的是Sqlite数据库,所有测试用例均通过。


推荐阅读
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • 交互式左右滑动导航菜单设计
    本文介绍了一种使用HTML和JavaScript实现的左右可点击滑动导航菜单的方法,适用于需要展示多个链接或项目的网页布局。 ... [详细]
  • 本文探讨了如何使用pg-promise库在PostgreSQL中高效地批量插入多条记录,包括通过事务和单一查询两种方法。 ... [详细]
  • 深入解析Android中的SQLite数据库使用
    本文详细介绍了如何在Android应用中使用SQLite数据库进行数据存储。通过自定义类继承SQLiteOpenHelper,实现数据库的创建与版本管理,并提供了具体的学生信息管理示例代码。 ... [详细]
  • 本文探讨如何利用Java反射技术来模拟Webwork框架中的URL解析过程。通过这一实践,读者可以更好地理解Webwork及其后续版本Struts2的工作原理,尤其是它们在MVC架构下的角色。 ... [详细]
  • 本文介绍了一种根据目标检测结果,从原始XML文件中提取并分析特定类别的方法。通过解析XML文件,筛选出特定类别的图像和标注信息,并保存到新的文件夹中,以便进一步分析和处理。 ... [详细]
  • 本文介绍了如何使用JFreeChart库创建一个美观且功能丰富的环形图。通过设置主题、字体和颜色等属性,可以生成符合特定需求的图表。 ... [详细]
  • 本文介绍了如何使用Java代码在Android设备上检测特定应用程序是否已安装。通过创建一个Intent并利用PackageManager查询该Intent的可用性来实现这一功能。 ... [详细]
  • 本文详细介绍了Linux内核中misc设备驱动框架的实现原理及应用方法,包括misc设备的基本概念、驱动框架的初始化过程、数据结构分析以及设备的注册与注销流程。 ... [详细]
  • 本文详细介绍了如何使用Python中的xlwt库将数据库中的数据导出至Excel文件,适合初学者和中级开发者参考。 ... [详细]
  • 本文介绍了如何通过ARM编译器组件重定向标准C运行时库的I/O函数,以适应不同的硬件平台。原文链接:https://www.keil.com/pack/doc/compiler/RetargetIO/html/retarget_overview.html ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • Python数据类型6 字典
    字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包 ... [详细]
  • MATLAB 数据读取与绘图实践
    本文详细介绍了如何使用 MATLAB 进行数据文件的选择、读取及处理,并最终绘制图形。重点在于数据的提取和转换过程。 ... [详细]
  • 本文探讨了一个特定于 Spring 4.2.5 的问题,即在应用上下文刷新事件(ContextRefreshedEvent)触发时,带有 @Transactional 注解的 Bean 未能正确代理事务。该问题在 Spring 4.1.9 版本中正常运行,但在升级至 4.2.5 后出现异常。 ... [详细]
author-avatar
廖蓉以
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有