Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --заявления по типам по месяцам, по типам по ППГ: не выгружается график, только таблица; (по постановке должно и то, и другое)
- --нет скролла! видно в статистике по операторам, там много записей
- --Принятые заявления по месяцам в разрезе типов заявлений
- --ОК
- declare @dateMonth int = 3
- select ClaimTypes.DisplayName, COUNT(Claims.Id) from Claims join ClaimTypes on Claims.TypeId = ClaimTypes.Id
- where MONTH(DateTime) = @dateMonth
- group by DisplayName
- --Принятые завления по месяцам в разрезе статусов заявлений
- --сумма заявлений на выпуск/перевыпуск неправильно считается (в Итого попадают отмененные)
- --что за СОЗДАНО/отменено
- --некоректное округление процентов
- declare @dateMonth int = 3
- select ClaimStates.DisplayName, COUNT(Claims.Id) from Claims join ClaimStates on Claims.StateId = ClaimStates.Id
- where MONTH(DateTime) = @dateMonth
- group by DisplayName
- --Принятые заявления по типам в разрезе ППГ
- --кажется, что где-то невключительная дата или еще чот
- declare @startDate datetime = '01.03.2017', @endDate datetime = '31.03.2017', @servicePoint int = 6
- select COUNT(Claims.TypeId) from Claims
- join PointsOfService on PointsOfService.Id = Claims.OriginPointOfServiceId and PointsOfService.Id = @servicePoint
- where DateTime between @startDate and @endDate
- group by TypeId
- --Статистика формирования заявлений и выдачи карт по операторам
- --даты? цифры немного не те
- declare @startDate datetime = '01.03.2017', @endDate datetime = '31.03.2017', @operator int = 44
- select COUNT(*) from Claims join Operators on Operators.Id = Claims.OperatorId and Operators.Id = @operator
- where Claims.DateTime between @startDate and @endDate --формирование
- group by TypeId
- UNION ALL
- select COUNT(*) from Claims join Operators on Operators.Id = Claims.OperatorId and Operators.Id = @operator
- where Claims.DateTime between @startDate and @endDate --сумма
- UNION ALL
- select COUNT(*) from ClaimStateHistories --выдача карт
- where DateTime between @startDate and @endDate and ClaimStateHistories.OperatorId = @operator and ClaimStateHistories.ToStateId = 60
- --Распределение граждан по социальным программам
- --цифры не те
- declare @startDate datetime = '01.03.2017', @endDate datetime = '31.03.2017'
- select SocialPrograms.Name, COUNT(SocialProgramParticipatings.PersonId) from SocialProgramParticipatings
- join SocialPrograms on SocialPrograms.Id = SocialProgramParticipatings.ProgramId
- where SocialProgramParticipatings.Start <= @startDate and (SocialProgramParticipatings.[End] >= @endDate or SocialProgramParticipatings.[End] is NULL)
- group by SocialPrograms.Name
- --Держатели карт по полу
- --каждый гражданин учитывается только один раз с последней выданной картой (перевыпущенные не учитываются), период дат не применяется -- странная постановка
- --цифры не те?
- drop view CardHolders
- create view CardHolders as
- SELECT DISTINCT LastName, FirstName, MiddleName, BirthDate, Sex
- FROM PersonInfos INNER JOIN Cards
- ON Cards.Id = PersonInfos.Id and Cards.StateId <> 10;
- select COUNT(Sex) from CardHolders
- group by Sex;
- --Держатели карт по возрасту
- --не отображаются строки, где 0 держателей карт
- --цифры не те
- drop view CardHolders
- create view CardHolders as
- SELECT DISTINCT LastName, FirstName, MiddleName, BirthDate
- FROM PersonInfos INNER JOIN Cards
- ON Cards.Id = PersonInfos.Id and Cards.StateId <> 10;
- create view AgeOfCardHolders as
- select BirthDate, YEAR(getdate()) - YEAR(BirthDate) as Age
- FROM CardHolders
- where MONTH(getdate()) >= MONTH(BirthDate) and DAY(getdate()) >= DAY(BirthDate)
- UNION ALL
- select BirthDate, YEAR(getdate()) - YEAR(BirthDate) - 1
- FROM CardHolders
- where not(MONTH(getdate()) >= MONTH(BirthDate) and DAY(getdate()) >= DAY(BirthDate)) ---возраст костыльный, есть 0 и -1
- select COUNT(Age) from AgeOfCardHolders
- where Age between 55 and 59
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement