Подсчет значений с помощью соединения - PullRequest
1 голос
/ 27 мая 2020

У меня есть две таблицы: таблица вакансий и таблица работодателей.

Я пытаюсь подсчитать количество рабочих мест на каждой работе за каждый день . Например:

- job 1 has 5 new employee in day 2020-04-28 14:51:28.463
- job 2 has 3 employee in day 2020-04-28 18:11:23.111
- job 3 has 1 employee in day 2020-04-27 11:31:13.845

Итак, у меня должна быть следующая информация:

Day 28: 8 employee
Day 27: 1 employee

Я пытаюсь с этим, но не работает, потому что дает мне двойной , потому что для каждого нового сотрудника создается новая строка:

Select COUNT(convert(date, job.dateCreat ,103)) as jobsPerDay from jobTable job join jobEmpl jobEmp 
on job.Id = jobEmp.Id
Group by convert(date, job.dateCreat ,103) 
order by convert(date, job.dateCreat, 103) desc;

Я не использую подзапрос вместо соединения, потому что мне нужно больше столбцов, чем это. Если я использую это, работает, но я не могу получить другое значение столбца из этой второй таблицы:

Select COUNT(convert(date, job.dateCreat ,103)) as jobsPerDay from jobTable job join (Select distinct jobEmpl_id from jobEmp) as jobEmp
on job.Id = jobEmp.Id
Group by convert(date, job.dateCreat ,103) 
order by convert(date, job.dateCreat, 103) desc;

Пример данных:

job Table

job Empl

1 Ответ

0 голосов
/ 28 мая 2020

Надеюсь, это поможет вам

create table jobTable(id int, JobName varchar(200), dateCreat DateTime)

create table jobEmpl(jobEmpl_id int, id int, dateCreat DateTime)


insert into jobTable values(1, 'Police', '2020-04-28 14:51:28.463')
insert into jobTable values(2, 'Medic', '2020-04-28 14:51:28.463')
insert into jobTable values(3, 'FootBaller', '2020-04-28 14:51:28.463')


insert into jobEmpl values(5, 1, '2020-04-28 14:51:28.463')
insert into jobEmpl values(6, 1, '2020-04-28 14:52:28.463')
insert into jobEmpl values(7, 1, '2020-04-28 14:53:28.463')
insert into jobEmpl values(8, 1, '2020-04-28 14:54:28.463')
insert into jobEmpl values(9, 1, '2020-04-28 14:55:28.463')
insert into jobEmpl values(16, 1, '2020-04-29 14:55:28.463')
insert into jobEmpl values(17, 1, '2020-05-29 14:55:28.463')
insert into jobEmpl values(10, 2, '2020-04-28 16:51:28.463')
insert into jobEmpl values(11, 2, '2020-04-28 16:53:28.463')
insert into jobEmpl values(12, 2, '2020-04-28 16:55:28.463')
insert into jobEmpl values(15, 3, '2020-04-27 18:12:18.263')


select j.id as JobId, count(je.jobEmpl_id) as NoOfEmployees, convert(date, je.dateCreat ,103) dateOfJoining
from jobEmpl je 
inner join jobTable j on j.id = je.id
group by j.id, convert(date, je.dateCreat ,103) 
order by j.id


select day(je.dateCreat) dayOfJoining,month(je.dateCreat) monthOfJoining,year(je.dateCreat) yearsOfJoining, count(je.jobEmpl_id) as NoOfEmployees
from jobEmpl je 
inner join jobTable j on j.id = je.id
group by day(je.dateCreat),month(je.dateCreat),year(je.dateCreat)

...