首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在ABAP中不排序的情况下从第二个表的薪资列中找到第一个最高和第三个最高和第三个最低工资的员工的姓名

在ABAP中,可以通过以下步骤找到第一个最高、第二个最高和第三个最低工资的员工姓名,而不进行排序:

  1. 首先,创建两个内表(Table1和Table2)来存储员工的薪资信息和姓名。
  2. 从数据库中获取员工的薪资信息,并将其存储在Table1中。
  3. 使用SORT语句对Table1按照薪资进行排序,以便找到最高和最低薪资。
  4. 使用LOOP语句遍历Table1,找到第一个最高薪资的员工,并将其姓名存储在一个变量中。
  5. 创建一个临时变量(TempSalary)来存储第一个最高薪资。
  6. 使用LOOP语句继续遍历Table1,找到第二个最高薪资的员工。在遍历过程中,如果找到的薪资比TempSalary大,则更新TempSalary和第二个最高薪资的员工姓名。
  7. 使用LOOP语句继续遍历Table1,找到第三个最低薪资的员工。在遍历过程中,如果找到的薪资比TempSalary小,则更新TempSalary和第三个最低薪资的员工姓名。
  8. 现在,我们已经找到了第一个最高、第二个最高和第三个最低薪资的员工姓名。

以下是一个示例代码:

代码语言:txt
复制
DATA: Table1 TYPE TABLE OF (structure_name), " 员工薪资信息表
      Table2 TYPE TABLE OF (structure_name), " 员工姓名表
      HighestSalary TYPE i, " 第一个最高薪资
      SecondHighestSalary TYPE i, " 第二个最高薪资
      ThirdLowestSalary TYPE i, " 第三个最低薪资
      HighestEmployee TYPE string, " 第一个最高薪资的员工姓名
      SecondHighestEmployee TYPE string, " 第二个最高薪资的员工姓名
      ThirdLowestEmployee TYPE string. " 第三个最低薪资的员工姓名

SELECT salary FROM employee INTO TABLE Table1.

SORT Table1 BY salary DESCENDING.

LOOP AT Table1 INTO DATA(employee).
  IF HighestSalary IS INITIAL.
    HighestSalary = employee-salary.
    HighestEmployee = employee-name.
  ELSEIF SecondHighestSalary IS INITIAL AND employee-salary < HighestSalary.
    SecondHighestSalary = employee-salary.
    SecondHighestEmployee = employee-name.
  ELSEIF ThirdLowestSalary IS INITIAL AND employee-salary < HighestSalary.
    ThirdLowestSalary = employee-salary.
    ThirdLowestEmployee = employee-name.
    EXIT. " 找到第三个最低薪资后退出循环
  ENDIF.
ENDLOOP.

WRITE: / '第一个最高薪资的员工姓名:', HighestEmployee.
WRITE: / '第二个最高薪资的员工姓名:', SecondHighestEmployee.
WRITE: / '第三个最低薪资的员工姓名:', ThirdLowestEmployee.

请注意,上述示例代码中的"structure_name"应替换为包含员工薪资和姓名字段的结构名称。此外,还需要根据实际情况进行适当的调整和错误处理。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,建议您在腾讯云官方网站上查找相关产品和服务,以获取更多详细信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Oracle知识点总结(一)

1 from emp; 查询记录个数 select count(1) from emp; 1代第一个字段,效率比*高。...where e1.deptno = d1.deptno; 不等值内联接 select * from emp e1,dept d1 where e1.deptno d1.deptno; 自连接链接 查询员工编号员工姓名员工经理编号姓名...= m1.empno and e1.deptno = d1.deptno; 显式内联接 select * from 1 inner join 2 on 连接条件 查询员工编号员工姓名员工经理编号姓名...查询员工工资=部门最低工资员工 - - 两个链接条件,首先是员工deptno = 部门deptno - - 并且员工工资 = 部门此部门最低工资 select * from emp e1,...找到员工工资最高前三名 (错误) select rownum,e1.* from emp order by sal desc; 上方代码查询出来数据是根据sal进行排序但是,rownum都是乱

2.3K10

【MySQL】查询与连接

scott 数据库中一共有三张 – emp、dept、salgrade,它们分别代表员工信息、部门信息以及薪资等级信息,具体结构以及数据如下: ---- 一、基本查询 1、简单基本查询...现在我们用 “分思想来求一下每个部门每种岗位平均工资最低工资: 求每个部门每种岗位平均工资与最低工资,肯定需要按部门岗位进行分组,而分组就是分,所以我们可以理解为对分组后得到子表进行聚合统计查询平均工资最低工资...笛卡尔积 笛卡尔积(Cartesian Product)是指在没有使用任何条件连接情况下,将两个或多个每一行与其他每一行进行组合,从而得到一个包含所有可能组合。...= 10; 显示工资比部门30所有员工工资高员工姓名、工资部门号。...显示员工FORD上级领导编号姓名

21320

MySQL经典33题,DQL语句硬核专项练习!!!

话不多说,直接导入三张员工:em 部门:dept 薪资等级:salgrade 以下DQL语句是基于上面三张进行。...,所在部门,上级 领导,雇员工资等级. 22、列出与"SCOTT"从事相同工作所有员工及部门名称. 23、列出薪金等于部门 30 员工薪金其他员工姓名 薪金.部门名称 24、列出薪金高于在部门...30 工作所有员工薪金员工 姓名薪金.部门名称. 25、列出在每个部门工作员工数量,平均工资和平均服务期 限. 26、列出所有员工姓名、部门名称工资。...27、列出所有部门详细信息人数 28、列出各种工作最低工资及从事此工作雇员姓名 29、列出各个部门 MANAGER(领导)最低薪金 30、列出所有员工年工资,按年薪从低到高排序 31、求出员工领导薪水超过...思路: 员工部门进行外连接(此处使用右外连接) 16、列出至少有 5 个员工所有部门 17、列出薪金比"SMITH"多所有员工信息. 18、列出所有"CLERK"(办事员)姓名及其部门名称

46840

MySQL入门到入魔(02)

__ 以x开头 倒数第二个是y x%y_ 查询员工姓孙员工姓名 select ename from emp where ename like '孙%'; 查询名字以精结尾员工信息 select...order by sal limit 6,2; ###综合练习题 查询员工名字里第二个字是八员工姓名工资 select ename,sal from emp where ename like...练习题 查询员工工资高于2000员工姓名工资,按照工资升序排序,查询第二页2条数据 select ename,sal from emp where sal>2000 order by sal...mgr is not null; 查询2号部门最高工资最低工资 起别名 select max(sal) 最高工资,min(sal) 最低工资 from emp where deptno=2; 查询1...查询名字包含精员工姓名工资 select ename,sal from emp where ename like '%精%'; 查询名字第二个字是八员工信息 select * from emp

62830

数据库基础与SQL基础知识整理

其余切掉 SELECT RIGHT ('你好哈',2) --right右侧开始留下两个字符,其余切掉 SELECT SUBSTRING(umsg,2,4) FROM t6 --substring显示第二个字符开始到第三个字符...八:SQL面试题 --1.列出EMPLOYEES各部门:部门编号,最高工资,最低工资 --2.列出EMPLOYEES各部门:部门编号、部门名称、最高工资、最低工资 --3.列出EMPLOYEES...各部门'职员'(Employee_job为'职员')最低工资最高工资部门Id --4.对于EMPLOYEES中最低工资小于1000部门,列出EMPLOYEE_JOB为'职员':部门编号...,最低工资最高工资 --5.根据部门编号由高到低,工资由低到高,列出每个员工姓名,部门号,工资 --6.列出'吴用'所在部门每个员工姓名与部门号 --7.列出每个员工姓名,头衔,部门号,部门名...--11.对于EMPLOYEES,列出各个部门工资高于本部门平均水平员工部门号,按部门号排序 --12.请找出部门具有两人以上,员工工资大于所在部门平均工资:部门id与这些人的人数。

1.2K10

数据库基础与SQL基础知识看这篇就够了!

其余切掉 SELECT RIGHT ('你好哈',2) --right右侧开始留下两个字符,其余切掉 SELECT SUBSTRING(umsg,2,4) FROM t6 --substring显示第二个字符开始到第三个字符...八:SQL面试题 --1.列出EMPLOYEES各部门:部门编号,最高工资,最低工资 --2.列出EMPLOYEES各部门:部门编号、部门名称、最高工资、最低工资 --3.列出EMPLOYEES...各部门'职员'(Employee_job为'职员')最低工资最高工资部门Id --4.对于EMPLOYEES中最低工资小于1000部门,列出EMPLOYEE_JOB为'职员':部门编号...,最低工资最高工资 --5.根据部门编号由高到低,工资由低到高,列出每个员工姓名,部门号,工资 --6.列出'吴用'所在部门每个员工姓名与部门号 --7.列出每个员工姓名,头衔,部门号,部门名...--11.对于EMPLOYEES,列出各个部门工资高于本部门平均水平员工部门号,按部门号排序 --12.请找出部门具有两人以上,员工工资大于所在部门平均工资:部门id与这些人的人数。

88620

MySQL练习题(一)

(10) DEFAULT NULL, PRIMARY KEY (`deptno`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 实际练习 -- 1.查询各部门薪资最低最高数据...2000部门且job为clerk部门编号、最低薪资最高薪资. select b.deptno as '部门号',max(sal) as '最高工资',min(sal) as '最低工资' from...2000且job为clerk部门编号、最低薪资最高薪资. select deptno as '部门编号', max(sal) as '最高薪资', min(sal) as '最低薪资' from...、员工薪资并按照薪资由低到高、编号有高到低顺序进行排序. select deptno as '部门编号',ename as '员工名词',sal as '薪资' from emp order by deptno...deptno=(select b.deptno as deptno from emp as b where b.ename = 'buddy'); * 需要注意是在子查询取别名时候不能前面的主查询别名一致

1.4K10

【MySQL】MySQL数据库进阶使用

如果要一长串显示信息,则可以使用concat将字段其他字符串连接在一起,然后进行select显示 replace可以在第一个参数查找第二个参数位置,查找到后用第三个参数进行替换。...substring可以用来截取子串,第一个参数代表要被截取string,第二个参数代表哪个下标位置开始截取,第三个参数代表截取长度。...3.数学函数 abs用于求绝对值,bin可以求出数二进制表示,hex求出十六进制表示形式,conv用于将第一个参数第二个参数所代表进制转换为第三个参数所代表进制形式。...mod用于取模,除了正整数能取模之外,负数也可以取模,负数取模形式上来看分两种情况,一种是第一个参数是负数,一种是第二个参数是负数,但实际计算时候,我们可以通过扩大第二个参数整数倍方式然后再加上一个数等于第一个参数...显示SMITH同一部门员工 查询10号部门工作岗位相同雇员名字,岗位,工资,部门号,部门名字,但是包含10自己工作岗位 显示工资比部门30所有员工工资高员工姓名、工资部门号

26120

玩转Mysql系列 - 第12篇:子查询(非常重要,高手必备)

子查询分类 按结果集行列数不同分为4种 标量子查询(结果集只有一行一) 列子查询(结果集只有一多行) 行子查询(结果集有一行多子查询(结果集一般为多行多) 按子查询出现在主查询不同位置分...然后将真实子查询结果进行连接查询。...50号部门最低工资部门id最低工资【having】 /*查询最低工资大于50号部门最低工资部门id最低工资【having】*/ /*①查询50号部门最低工资*/ SELECT min(salary...示例1 返回location_id是1400或1700部门所有员工姓名 /*返回location_id是1400或1700部门所有员工姓名*/ /*方式1*/ /*①查询location_id...= 'IT_PROG'; 行子查询(结果集一行多) 示例 查询员工编号最小并且工资最高员工信息,3种方式。

1K10

推荐学Java——数据高级操作

薪资等级 字段分别是:等级、最低工资最高工资。 以上表数据大家可以自己修改填充 工具sql文件在公众号 推荐学java 回复navicat获取。...需求: 找出每个员工薪资等级,要求显示员工姓名薪资薪资等级。...分析: 薪资等级是一张单独员工姓名薪资员工,同样需要两张联合查询。...分析: 员工中有员工姓名员工上级领导编号,领导同样也是员工,也存在员工,所以需要将一张员工)看做两张来查询,故称作这种情况为自连接查询。...(select) where 子句中子查询 案例: 找出比最低工资员工工资,不是工资登记最低工资)高员工姓名工资。

98210

终于知道工资为什么要保密了

再比如是一个在公司工作多年资深员工,意外得知新入职年轻员工起薪接近或甚至高于他薪资。这种情况可能会引起他不满怨气,影响他对公司忠诚度工作。 所以工资保密还是有一定好处。...然后继续来学习 LeetCode 上面工资有关一道题目:去掉最低工资最高工资后工资平均值。 题目描述是这样子。...给你一个整数数组 salary ,数组里每个数都是 唯一 ,其中 salary[i] 是第 i 个员工工资。 请你返回去掉最低工资最高工资以后,剩下员工工资平均值。...这个问题解决思路相对简单明了。有两种解法,第一种如下: 对工资数组进行排序。 去掉数组第一个元素(最低工资最后一个元素(最高工资)。 计算剩余元素总和,并除以剩余元素数量得到平均值。...去掉最高最低工资后,计算平均值。

10010

MySQL基础之查询(二)

②n连接,至少需要n-1个连接条件 ③ 多表顺序没有要求 ④一般需要为起别名 ⑤可以搭配前面介绍所有子句使用,比如排序、分组、筛选 案例1:查询女神名对应男神名 SELECT NAME...`commission_pct` IS NOT NULL; 案例2:查询城市名第二个字符为o部门名城市名 SELECT department_name,city FROM departments...`last_name` LIKE '%k%'; 四)外连接 应用场景:用于查询一个中有,另一个没有的记录 特点: 1、外连接查询结果为主表所有记录 如果中有和它匹配,则显示匹配值...如果没有和它匹配,则显示null 外连接查询结果=内连接结果+主表中有而没有的记录 2、左外连接,left join左边是主表 右外连接,right join右边是主表 3、左外右外交换两个顺序...各个部门 最高工资中最低那个部门 最低工资是多少 #①查询各部门最高工资中最低部门编号 SELECT department_id FROM employees GROUP BY department_id

1.8K10

JAVASQL查询语句大全,select多表查询,各种查询

薪资为1400、1600、1800员工,显示姓名薪资 select name,sal from emp where sal in(1400,1600,1800); – 查询emp姓名以”刘..._”表示一个字符串 – 查询emp薪资大于4000薪资小于2000员工,显示姓名薪资。...order by 排序 XXX asc 升序 order by 排序 XXX desc 降序 – 对emp中所有员工薪资进行升序(从低到高)排序,显示姓名薪资。...4、avg() – 求所查询记录中指定平均值 – 查询emp最高薪资 select max(sal) as 最高薪资 from emp; – 查询emp最高薪资 select max(...中所有员工薪资(包含奖金) select sum(sal) as 员工薪资 from emp; – 统计emp员工平均薪资(包含奖金) select avg(sal) as 员工平均薪资

2.1K30

第35次文章:数据库简单查询

WHERE empname like '%a%'; #案例2:查询员工第三个字符为i,第五个字符为e员工工资 SELECT empname,salary from emp WHERE empname...(3)列表不支持通配符使用 */ #查询:查询员工姓名为tom1、tom、ceimeng员工名字部门编号 SELECT empname,deptId FROM emp where...by字句一般是放在查询语句最后面,limit字句除外 */ #案1:查询薪资>=2000员工信息,按生日进行排序【添加筛选调价】 SELECT * from emp where salary >...= 2000 ORDER BY birthday DESC; #案2:按年薪高低显示员工信息 年薪【按表达式排序】 SELECT *,salary+IFNULL(bonus,0) '年薪' FROM...tips:通过上面的结果集,我们可以明显看出,if函数类似于java三位运算符,当判断条件为真时,输出第一个结果,条件为假时,输出第二个结果。

1.1K20

MySQL入门学习笔记(上)

(11)in not in (包含与包含) 相当于多个or(not in 不在这个范围) 注意:in不是一个区间,in后面跟是具体值。 例:查询薪资是8005000员工信息?...3.根据字段位置排序(了解) select ename,sal from emp order by 2; #2表示第二,第二是sal 建议在开发这么写,建议在开发这么写,因为健壮。..., 起始下标,截取长度)) select substr(ename, 1, 1) as ename from emp; 注意:起始下标1开始,没有0 例:找出员工名字第一个字是A员工信息?...empdept联合起来查询数据,emp取出员工名字,dept取部门名字。...(select). 2.where子句中子查询 例:找出比最低工资员工薪资? 实现思路: 第一步:查询最低工资是多少?

1.7K10

Oracle数据库相关函数解析

, 叫 dual, 专门用于进行测试, 可以daul 查询任何数据 1.2 length 用于计算字符串长度 a) 查询所有员工姓名姓名长度 select ename, length(...a) 查询所有员工姓名, 并显示姓名前 3 个字母 select ename, substr(ename, 1, 3) from emp; b) 查询所有员工姓名, 并显示姓名后 3 个字母...注意: 两者数据类型必须一致 查询所有员工姓名, 工资, 提成总工资(工资+提成) select ename, sal, comm, sal+nvl(comm, 0) total from...emp; 5.2 nvl2 有三个参数, 如果第一个参数不为空, 则使用第二个参数, 如果为空, 则使用第三个参数 select ename, sal, comm, nvl2(comm, sal...select max(sal) from emp; 6.4 min 求最小值 统计公司最低工资 select min(sal) from emp; 6.5 count 计数 统计公司员工总数

66520
领券