我是学生,这是家庭作业的一部分。谢谢你的任何建议。
我有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
答案 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
这应该返回两行 - 一行有受薪员工,一行有小时员工。