SQL Count函数

时间:2010-07-14 23:41:25

标签: sql sql-server

我是学生,这是家庭作业的一部分。谢谢你的任何建议。

我有2张桌子 Employee有一个列last_name, Job_title有一个exempt_non_exempt列,它的数据类型是bit。 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

5 个答案:

答案 0 :(得分:1)

您的where子句不需要,实际上在这里打破了查询。 而且你还没有添加一个join子句。

我认为这个查询就足够了:

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

答案 1 :(得分:0)

确切地考虑您需要检索哪些数据 - 这应该指向您在select子句和联接中所需列的正确方向。

答案 2 :(得分:0)

在SQL Server上,您可以使用带有count的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您编写的两个查询以返回联合结果集。这在技术上是一个陈述,但它可能不适合你的作业。

答案 3 :(得分: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

答案 4 :(得分: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

这应该返回两行 - 一行有受薪员工,一行有小时员工。