2010-07-14 88 views
0

我是学生,这是一项家庭作业的一部分。感谢您的任何建议。SQL计数函数

我有2个表格。
员工有一列last_name, Job_title有一个exempt_non_exempt列,它的数据类型是位。 0表示每小时工资为1 两个表的主键和外键都是job_title。

我需要找出有多少员工工资和每小时工时数?我只能用一个声明。所以我需要COUNT和JOIN

我有10名员工,8人是小时工,2人是工薪阶层。

*

这段代码显示计数为7

Select Employee.Last_name, Job_title.Exempt_Non_Exempt_Status, 

COUNT (Exempt_Non_Exempt_Status) 

from Employee, Job_title 

where Exempt_Non_Exempt_Status=0 

group by Employee.Last_name, Job_title.Exempt_Non_Exempt_Status 

我开始用这个,可以将状态更改为= O或= 1,但需要2个Select语句

SELECT LAST_NAME FROM Employee 

JOIN JOB_TITLE 

ON EMPLOYEE.JOB_TITLE=JOB_TITLE.JOB_TITLE 

WHERE Exempt_Non_Exempt_Status 

=0 

ORDER BY Last_name 

回答

0

尝试:

SELECT J.Exempt_Non_Exempt_Status, count(*) 
FROM Employee E 
JOIN Job_title J ON E.Job_title = J.Job_title 
GROUP BY J.Exempt_Non_Exempt_Status 

这应返回两行 - 一个用计数受薪雇员,每小时雇员一人。

0

请仔细考虑需要检索的数据 - 这应该指出您在select子句和您的联接中需要的列的正确方向。

0

上的SQL Server,你可以使用一个case语句与计数,例如:

SELECT COUNT(CASE WHEN SKY = 'blue' THEN 1 ELSE 0 END) 'blueskies' 
SELECT COUNT(CASE WHEN SKY = 'red' THEN 1 ELSE 0 END) 'redskies' 
    FROM planets 

这也要算行星与有蓝天的数量和行星与那些天空数红色,在一个声明(和一行)中。

或者,您可以使用UNION您写的两个查询返回联合结果集。这在技术上只是一个说法,但它可能不适合你的作业。

1

您的Where子句不是必需的,实际上在此处打断查询。 而你还没有添加连接子句。

我想,这个查询就足够了:

SELECT 
    [the columns you want to select] 
FROM Employee 
JOIN Job_title ON Employee.Job_title = Job_title.Job_title 
GROUP BY 
    Employee.Last_name, 
    Job_title.Exempt_Non_Exempt_Status 
0

尝试是这样的:

select Last_Name, 
sum(exempt) as [Hourly], 
sum(exempt) as [Salary], 
from employees e inner join Job Title j on e.last_name = j.last_name 
Group by last_name, exempt