2010-07-14 90 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