2010-07-15 134 views
1

我是一名学生,这是我最后的家庭作业:)计算MIN和MAX函数

/* **(4.9)计算豁免雇员 **和非豁免的最高薪水最低工资雇员。 */

我只能用一个select语句...或不运行两个单独的查询

我有2个表... JOB_TITLE

(Job_title varchar (50) PRIMARY KEY, 
EEO_1_Classification varchar(200), 
Job_description varchar(250), 
Exempt_Non_Exempt_Status bit); 

员工

(Emp_id int NOT NULL IDENTITY(1,1)PRIMARY KEY, 
Last_name varchar(25), 
First_name varchar(25), 
Address varchar(40),  
City varchar (15), 
State char(2), 
Telephone_area_code varchar(3), 
Telephone_number varchar(8),  
Job_title varchar(50) foreign key references job_title(job_title), 
Hire_date smalldatetime,  
Wage money, 
Gender char(1), 
Race varchar(25), 
Age int); 

他们linke d由job_title主键/外键。

任何建议???

+1

你尝试过这么远吗?尝试阅读sql中的“min”函数。 – 2010-07-15 19:00:23

+2

这是您最后一次家庭作业? – 2010-07-15 19:01:31

+0

辍学,呃? – 2010-07-15 20:19:42

回答

2

计算豁免员工非豁免员工的最低工资和最高薪水:

select min(case when j.Exempt_Non_Exempt_Status = 1 then e.Wage end) 
,  max(case when j.Exempt_Non_Exempt_Status = 0 then e.Wage end) 
from Employee e 
join Job_title j 
on  j.Job_title = e.Job_title 
1

由于它的功课有一些提示。 您需要通过job_title加入两个表,以找到最小/最大值,您应该在where子句中使用聚合函数min(Wage)max(Wage)并包括Exempt_Non_Exempt_Status

0

你可以用一些聪明的技巧在一个查询中做到这一点,但这不值得。如果你在两个查询中做到这一点,它更简单,更容易编码,更容易维护。

  • 一个查询可以获得豁免员工的最低工资。
  • 第二个单独查询可以获得非豁免员工的最高工资。

这两个查询应该更容易分别解决。

+0

我需要一种查询方式,如果有的话 – rhonda 2010-07-15 19:24:34

+0

单一查询解决方案是由@Andomar给出的,但我坚持认为在一个查询中尝试做太多使查询变得僵化和难以理解。当我们在传统代码中这样做时,我们称之为*意大利面代码*。 – 2010-07-15 20:06:24