Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Среднесписочная численность расчет  [new]
Lania
Member

Откуда:
Сообщений: 136
Добрый день!
Есть необходимость считать среднесписочную численность работников в месяц. Расчет следующий: считается кол-во работников каждый день месяца, суммируется и делится на кол-во дней в месяце.
Данная схема была организована следующим образом:
1. В запросе создается 31 поле в которых каждому сотруднику проставляется 1 если в этот день он работал:
,case when (convert(datetime,x.priem)<convert(datetime,dateadd(day,1-day(v.PK_Дата),v.PK_Дата)))
and (convert(datetime,x.UVOL)>convert(datetime,dateadd(day,1-day(v.PK_Дата),v.PK_Дата)) or x.UVOL='2001-01-01 00:00:00.000')
then 1 else 0 end as flag_rab_1

,case when (convert(datetime,x.priem)<convert(datetime,dateadd(day,2-day(v.PK_Дата),v.PK_Дата)))
and (convert(datetime,x.UVOL)>convert(datetime,dateadd(day,2-day(v.PK_Дата),v.PK_Дата)) or x.UVOL='2001-01-01 00:00:00.000')
then 1 else 0 end as flag_rab_2

,case when (convert(datetime,x.priem)<convert(datetime,dateadd(day,3-day(v.PK_Дата),v.PK_Дата)))
and (convert(datetime,x.UVOL)>convert(datetime,dateadd(day,3-day(v.PK_Дата),v.PK_Дата)) or x.UVOL='2001-01-01 00:00:00.000')
then 1 else 0 end as flag_rab_3
......
2. Данный запрос вытягивает данные в PowerPivot, там суммируются единицы для каждого месяца и все делится на кол-во дней в месяце.

Все хорошо работает, пока не закрываешь файл. Если сохраненный файл открыть вновь и попытаться открыть PowerPivot, то пишет ошибку.
Картинка с другого сайта.

Подскажите способ расчета среднесписочной численности с помощью sql.
19 фев 15, 15:19    [17287934]     Ответить | Цитировать Сообщить модератору
 Re: Среднесписочная численность расчет  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lania
Расчет следующий: считается кол-во работников каждый день месяца, суммируется и делится на кол-во дней в месяце.

Т.е. структуру исходной таблицы и данные в ней каждый может сам придумать ?

Lania
Данная схема была организована следующим образом:

Каким образом помогут решению задачи демонстранция кусков запросов и крэша постороннего приложения ?
19 фев 15, 16:51    [17288704]     Ответить | Цитировать Сообщить модератору
 Re: Среднесписочная численность расчет  [new]
ссч
Guest
Lania,
;with cte_dates as	--вообще таблица с датами уже должна быть
(	select dateadd(dd, sv.number - 1, '20150101') as date0
	from master.dbo.spt_values sv
	where 1=1
	and sv.type = 'P'
	and sv.number between 1 and 31
),
cte_hr as --а пример можно было бы и подготовить
(	select 1 as ID, cast('20140701' as date) as priem, cast('20010101' as date) as uvol union all
	select 2 as ID, '20150114' as priem, '20010101' as uvol union all
	select 3 as ID, '20150201' as priem, '20010101' as uvol union all
	select 4 as ID, '20140801' as priem, '20150127' as uvol
)
select 1.0 * COUNT(*) / 31 as AVG_SS
from cte_dates d
join cte_hr h on d.date0 between h.priem and case when h.uvol = '20010101' then '22220101' else h.uvol end
19 фев 15, 17:28    [17288962]     Ответить | Цитировать Сообщить модератору
 Re: Среднесписочная численность расчет  [new]
Lania
Member

Откуда:
Сообщений: 136
Во вложении файл со структурой. Если в кратце, то есть Имя сотрудника, дата приема, дата увольнения. Необходимо определить среднесписочную численность сотрудников в каждом месяце 2014 года.
Расчет следующий:
Январь 2014
Сумма(кол-во работников на 1 января +кол-во работников на 2 января +кол-во работников на 3 января + ...+ кол-во работников на 31 января)/31

Как данный расчет можно организовать с помощью sql?

К сообщению приложен файл (пример.xlsx - 111Kb) cкачать
20 фев 15, 10:07    [17291253]     Ответить | Цитировать Сообщить модератору
 Re: Среднесписочная численность расчет  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lania
Во вложении файл со структурой.

https://www.sql.ru/forum/127456/rekomendacii-po-oformleniu-soobshheniy-v-forume п.4 и п.6
20 фев 15, 10:10    [17291264]     Ответить | Цитировать Сообщить модератору
 Re: Среднесписочная численность расчет  [new]
Lania
Member

Откуда:
Сообщений: 136
Всем спасибо.
Я значение своего запроса засунула в таблицу в базе,а из нее уже power Pivot работает.
Я дольше буду запросы на тестовые данные писать.
20 фев 15, 11:50    [17291980]     Ответить | Цитировать Сообщить модератору
 Re: Среднесписочная численность расчет  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lania
Я значение своего запроса засунула в таблицу в базе,

А до этого где эти значения были ?
20 фев 15, 12:39    [17292363]     Ответить | Цитировать Сообщить модератору
 Re: Среднесписочная численность расчет  [new]
aleks2
Guest
Lania
Всем спасибо.
Я значение своего запроса засунула в таблицу в базе,а из нее уже power Pivot работает.
Я дольше буду запросы на тестовые данные писать.


Так тредстартерша и останется неграмотной.
Будет писать пивоты и анпивоты... когда они не нужны.
20 фев 15, 12:44    [17292415]     Ответить | Цитировать Сообщить модератору
 Re: Среднесписочная численность расчет  [new]
xenix
Guest
автор
Так тредстартерша и останется неграмотной.
Будет писать пивоты и анпивоты... когда они не нужны.


Спешит человек сильно.
20 фев 15, 12:59    [17292519]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить