2010-07-14 2 views
0

Я студент, это часть задания на домашнюю работу. Спасибо за любой совет.Функция подсчета SQL

У меня есть 2 стола.
У сотрудника есть столбец last_name, Job_title имеет столбец exempt_non_exempt, тип данных которого бит. 0 для ежечасно 1 для зарплаты Первичным ключом и внешним ключом является job_title для обеих таблиц.

Мне нужно узнать, сколько человек наемных работников и сколько раз в час? Я могу использовать только одно утверждение. Поэтому мне нужно СЧИТАТЬ И ПРИСОЕДИНЯЙТЕСЬ

У меня есть 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 

Я начал с этим и может изменить статус = о или = 1, но это требует 2 Выберите заявления

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

Try:

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, вы можете использовать случай заявление с графом, например:

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 не требуется и фактически нарушает запрос здесь. И вы не добавили предложение 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 
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 
Смежные вопросы