什么是最小和最大的个人收费小时的工作类?

ycl3bljg  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(396)

我需要在sql中回答这个棘手的问题,我尝试了很多方法,最终得到了这个查询,它只检索max sum或min sum,而不检索相应的雇员。
此代码仅检索最大费用总和值,但我需要它的最大总和值(按职务代码分组)与员工id或姓名作为问题中的请求。

  1. select MAX(t.SUM_CHARGE)
  2. from
  3. (select DISTINCT e.JOB_CODE2019,a.EMP_NUM2019,a.PROJ_NUM2019,SUM(a.ASSIGN_CHARGE) as SUM_CHARGE
  4. from ASSIGNMENT2019 a inner join EMPLOYEE2019 e
  5. on a.EMP_NUM2019 = e.EMP_NUM2019
  6. inner join JOB2019 j
  7. on e.JOB_CODE2019 = j.JOB_CODE2019
  8. group by a.EMP_NUM2019)t
  9. group by t.JOB_CODE2019 ;

下面是表create和insert语句。

  1. create table JOB2019(
  2. JOB_CODE2019 int,
  3. JOB_DESCRIPTION2019 varchar(30),
  4. JOB_CHG_HOUR2019 decimal(4,2),
  5. PRIMARY KEY(JOB_CODE2019 )
  6. );
  7. create table EMPLOYEE2019(
  8. EMP_NUM2019 int,
  9. EMP_LNAME2019 varchar(20),
  10. EMP_FNAME2019 varchar(20),
  11. EMP_INITIAL2019 varchar(1),
  12. EMP_HIREDATE2019 varchar(50),
  13. JOB_CODE2019 int,
  14. primary key (EMP_NUM2019),
  15. foreign key (JOB_CODE2019) references JOB2019(JOB_CODE2019)
  16. );
  17. create table PROJECT2019(
  18. PROJ_NUM2019 int,
  19. PROJ_NAME2019 varchar(20),
  20. EMP_NUM2019 int,
  21. primary key (PROJ_NUM2019),
  22. foreign key (EMP_NUM2019) references employee2019(EMP_NUM2019)
  23. );
  24. create table ASSIGNMENT2019(
  25. ASSIGN_NUM2019 int,
  26. ASSIGN_DATE2019 varchar(50),
  27. PROJ_NUM2019 int,
  28. EMP_NUM2019 int,
  29. ASSIGN_HOURS2019 decimal(5,2),
  30. ASSIGN_CHG_HOUR2019 decimal(5,2),
  31. ASSIGN_CHARGE2019 decimal(7,2) ,
  32. primary key (ASSIGN_NUM2019),
  33. foreign key (PROJ_NUM2019) references project2019(PROJ_NUM2019),
  34. foreign key (EMP_NUM2019) references employee2019(EMP_NUM2019)
  35. );
  36. insert into JOB2019
  37. values (500,'Programmer',35.75)
  38. ,(501,'Systems Analyst',96.75)
  39. ,(502,'Database Designer',105.00)
  40. ,(503,'Electrical Engineer',84.50)
  41. ,(504,'Mechanical Engineer',67.90)
  42. ,(505,'Civil Engineer',55.78)
  43. ,(506,'Clerical Support',26.87)
  44. ,(507,'DSS Analyst',45.95)
  45. ,(508,'Applications Designer',48.10)
  46. ,(509,'Bio Technician',34.55)
  47. ,(510,'General Support',18.36);
  48. insert into EMPLOYEE2019
  49. values (101,'News','John','G','08Nov2000'd,502)
  50. ,(102,'Senior','David','H','12Jun1989'd,501)
  51. ,(103,'Arbough','June','E','01Dec1997'd,503)
  52. ,(104,'Ramoras','Anne','K','15Nov1988'd,501)
  53. ,(105,'Johnson','Alice','K','01Feb1994'd,502)
  54. ,(106,'Smithfield','William',' ','22Jun2005'd,500)
  55. ,(107,'Alonzo','Maria','D','10Oct1994'd,500)
  56. ,(108,'Washington','Ralph','B','22Aug1889'd,501)
  57. ,(109,'Smith','Larry','W','18Jul1999'd,501)
  58. ,(110,'Olenko','Gerald','A','11Dec1996'd,505)
  59. ,(111,'Wabash','Geoff','B','04Apr1989'd,506)
  60. ,(112,'Smithson','Darlene','M','23Oct1995'd,507)
  61. ,(113,'Joenbrood','Delbert','K','15Nov1994'd,508)
  62. ,(114,'Jones','Annelise',' ','20Aug1991'd,508)
  63. ,(115,'Bawangi','Travis','B','25Jan1990'd,501)
  64. ,(116,'Pratt','Gerald','L','05Mar1995'd,510)
  65. ,(117,'Williamson','Angie','H','19Jun1994'd,509)
  66. ,(118,'Frommer','James','J','04Jan2006'd,510);
  67. insert INTO PROJECT2019
  68. values (15,'Evergreen',105)
  69. ,(18,'Amber Wave',104)
  70. ,(22,'Rolling Tide',113)
  71. ,(25,'Starflight',101);
  72. insert into ASSIGNMENT2019(ASSIGN_NUM2019,ASSIGN_DATE2019,PROJ_NUM2019,EMP_NUM2019,ASSIGN_HOURS2019,ASSIGN_CHG_HOUR2019)
  73. values(1001,'04Mar2012'd,15,103,2.6,84.50)
  74. ,(1002,'04Mar2012'd,18,118,1.4,18.36)
  75. ,(1003,'05Mar2012'd,15,101,3.6,105.00)
  76. ,(1004,'05Mar2012'd,22,113,2.5,48.10)
  77. ,(1005,'05Mar2012'd,15,103,1.9,84.50)
  78. ,(1006,'05Mar2012'd,25,115,4.2,96.75)
  79. ,(1007,'05Mar2012'd,22,105,5.2,105.00)
  80. ,(1008,'05Mar2012'd,25,101,1.7,105.00)
  81. ,(1009,'05Mar2012'd,15,105,2.0,105.00)
  82. ,(1010,'06Mar2012'd,15,102,3.8,96.75)
  83. ,(1011,'06Mar2012'd,22,104,2.6,96.75)
  84. ,(1012,'06Mar2012'd,15,101,2.3,105.00)
  85. ,(1013,'06Mar2012'd,25,114,1.8,48.10)
  86. ,(1014,'06Mar2012'd,22,111,4.0,26.87)
  87. ,(1015,'06Mar2012'd,25,114,3.4,48.10)
  88. ,(1016,'06Mar2012'd,18,112,1.2,45.95)
  89. ,(1017,'06Mar2012'd,18,118,2.0,18.36)
  90. ,(1018,'06Mar2012'd,18,104,2.6,96.75)
  91. ,(1019,'06Mar2012'd,15,103,3.0,84.50)
  92. ,(1020,'07Mar2012'd,22,105,2.7,105.00)
  93. ,(1021,'08Mar2012'd,25,108,4.2,96.75)
  94. ,(1022,'07Mar2012'd,25,114,5.8,48.10)
  95. ,(1023,'07Mar2012'd,22,106,2.4,35.75);
  96. Update assignment2019
  97. set ASSIGN_CHARGE2019 = ASSIGN_HOURS2019 * ASSIGN_CHG_HOUR2019;

我非常感谢你对解决上述问题的帮助。谢谢您。

daolsyd0

daolsyd01#

你需要帮助,所以你也必须努力呈现一个mre,为什么我要为一个非常简单的sql查询提供一个最小的可复制的例子?
这就是你想要的,给出了一个非常难听的问题

  1. SELECT t2.JOB_CODE2019,maxcharge,MIN(CONCAT(t1.EMP_FNAME2019,' ' ,t1.EMP_LNAME2019)) empnamemax,mincharge,
  2. MIN(CONCAT(t3.EMP_FNAME2019,' ' ,t3.EMP_LNAME2019)) empnamemin
  3. FROM
  4. (select t.JOB_CODE2019,MAX(t.SUM_CHARGE) maxcharge,MIN(t.SUM_CHARGE) mincharge
  5. from
  6. (select DISTINCT e.JOB_CODE2019,a.EMP_NUM2019, a.PROJ_NUM2019,SUM(a.ASSIGN_CHARGE2019) as SUM_CHARGE
  7. from ASSIGNMENT2019 a inner join EMPLOYEE2019 e
  8. on a.EMP_NUM2019 = e.EMP_NUM2019
  9. inner join JOB2019 j
  10. on e.JOB_CODE2019 = j.JOB_CODE2019
  11. group by a.PROJ_NUM2019,e.JOB_CODE2019,a.EMP_NUM2019)t
  12. group by t.JOB_CODE2019) t2
  13. INNER JOIN (select DISTINCT e.JOB_CODE2019,a.EMP_NUM2019, EMP_LNAME2019 , EMP_FNAME2019, a.PROJ_NUM2019,SUM(a.ASSIGN_CHARGE2019) as SUM_CHARGE
  14. from ASSIGNMENT2019 a inner join EMPLOYEE2019 e
  15. on a.EMP_NUM2019 = e.EMP_NUM2019
  16. inner join JOB2019 j
  17. on e.JOB_CODE2019 = j.JOB_CODE2019
  18. group by a.PROJ_NUM2019,e.JOB_CODE2019,a.EMP_NUM2019, EMP_LNAME2019 , EMP_FNAME2019)t1
  19. ON t2.JOB_CODE2019 = t1.JOB_CODE2019 AND t2.maxcharge = t1.SUM_CHARGE
  20. INNER JOIN (select DISTINCT e.JOB_CODE2019,a.EMP_NUM2019, EMP_LNAME2019 , EMP_FNAME2019, a.PROJ_NUM2019,SUM(a.ASSIGN_CHARGE2019) as SUM_CHARGE
  21. from ASSIGNMENT2019 a inner join EMPLOYEE2019 e
  22. on a.EMP_NUM2019 = e.EMP_NUM2019
  23. inner join JOB2019 j
  24. on e.JOB_CODE2019 = j.JOB_CODE2019
  25. group by a.PROJ_NUM2019,e.JOB_CODE2019,a.EMP_NUM2019, EMP_LNAME2019 , EMP_FNAME2019)t3
  26. ON t2.JOB_CODE2019 = t3.JOB_CODE2019 AND t2.mincharge = t3.SUM_CHARGE
  27. GROUP BY t2.JOB_CODE2019;
  1. JOB_CODE2019 | maxcharge | empnamemax | mincharge | empnamemin
  2. -----------: | --------: | :----------------- | --------: | :-----------------
  3. 503 | 633.75 | June Arbough | 633.75 | June Arbough
  4. 510 | 62.42 | James Frommer | 62.42 | James Frommer
  5. 501 | 406.35 | Ralph Washington | 251.55 | Anne Ramoras
  6. 502 | 829.50 | Alice Johnson | 178.50 | John News
  7. 508 | 529.10 | Annelise Jones | 120.25 | elbert Joenbrood
  8. 506 | 107.48 | Geoff Wabash | 107.48 | Geoff Wabash
  9. 507 | 55.14 | arlene Smithson | 55.14 | arlene Smithson
  10. 500 | 85.80 | William Smithfield | 85.80 | William Smithfield

db<>在这里摆弄

展开查看全部

相关问题