2010-07-14 9 views
0

Je suis un étudiant, cela fait partie d'un devoir. Merci pour tout conseil.Fonction SQL Count

J'ai 2 tables.
Le salarié a une colonne last_name, Job_title a une colonne exempt_non_exempt dont le type de données est bit. 0 pour l'heure 1 pour le salaire La clé primaire et la clé étrangère sont job_title pour les deux tables.

J'ai besoin de savoir combien d'employés sont salariés et combien sont salariés? Je ne peux utiliser qu'une seule déclaration. Je dois donc COMPTER ET REJOINDRE

J'ai 10 employés et 8 sont à l'heure et 2 sont salariés.

*

Ce code indique le nombre de 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 

J'ai commencé avec cela et peut changer le statut = o ou = 1 mais qui nécessite 2 instructions 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 

Répondre

0

Essayez:

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 

Cela devrait retourner deux lignes - une avec un nombre des employés salariés, un avec un nombre d'employés horaires.

0

Réfléchissez exactement aux données que vous devez extraire. Elles doivent vous indiquer la bonne direction pour les colonnes dont vous avez besoin dans la clause select et vos jointures.

0

Sur le serveur SQL, vous pouvez utiliser une déclaration de cas avec le compte, par exemple:

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 

Ce serait compter le nombre de planètes avec un ciel qui sont bleus, et le nombre de planètes avec un ciel qui sont rouge, dans une déclaration (et une rangée).

Alternativement, vous pouvez UNION les deux requêtes que vous avez écrites pour retourner un ensemble de résultats. Ceci est techniquement une déclaration, mais il pourrait ne pas faire pour vos devoirs.

1

Votre clause where n'est pas nécessaire et casse la requête ici. Et vous n'avez pas ajouté de clause de jointure.

Je suppose que cette requête suffirait:

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

Essayez quelque chose comme ceci:

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