Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.59 KB | None | 0 0
  1. --заявления по типам по месяцам, по типам по ППГ: не выгружается график, только таблица; (по постановке должно и то, и другое)
  2. --нет скролла! видно в статистике по операторам, там много записей
  3.  
  4. --Принятые заявления по месяцам в разрезе типов заявлений
  5. --ОК
  6. declare @dateMonth int = 3
  7.  
  8. select ClaimTypes.DisplayName, COUNT(Claims.Id) from Claims join ClaimTypes on Claims.TypeId = ClaimTypes.Id
  9. where MONTH(DateTime) = @dateMonth
  10. group by DisplayName
  11.  
  12. --Принятые завления по месяцам в разрезе статусов заявлений
  13. --сумма заявлений на выпуск/перевыпуск неправильно считается (в Итого попадают отмененные)
  14. --что за СОЗДАНО/отменено
  15. --некоректное округление процентов
  16. declare @dateMonth int = 3
  17.  
  18. select ClaimStates.DisplayName, COUNT(Claims.Id) from Claims join ClaimStates on Claims.StateId = ClaimStates.Id
  19. where MONTH(DateTime) = @dateMonth
  20. group by DisplayName
  21.  
  22. --Принятые заявления по типам в разрезе ППГ
  23. --кажется, что где-то невключительная дата или еще чот
  24. declare @startDate datetime = '01.03.2017', @endDate datetime = '31.03.2017', @servicePoint int = 6
  25.  
  26. select COUNT(Claims.TypeId) from Claims
  27. join PointsOfService on PointsOfService.Id = Claims.OriginPointOfServiceId and PointsOfService.Id = @servicePoint
  28. where DateTime between @startDate and @endDate
  29. group by TypeId
  30.  
  31. --Статистика формирования заявлений и выдачи карт по операторам
  32. --даты? цифры немного не те
  33. declare @startDate datetime = '01.03.2017', @endDate datetime = '31.03.2017', @operator int = 44
  34.  
  35. select COUNT(*) from Claims join Operators on Operators.Id = Claims.OperatorId and Operators.Id = @operator
  36. where Claims.DateTime between @startDate and @endDate --формирование
  37. group by TypeId
  38. UNION ALL
  39. select COUNT(*) from Claims join Operators on Operators.Id = Claims.OperatorId and Operators.Id = @operator
  40. where Claims.DateTime between @startDate and @endDate --сумма
  41. UNION ALL
  42. select COUNT(*) from ClaimStateHistories --выдача карт
  43. where DateTime between @startDate and @endDate and ClaimStateHistories.OperatorId = @operator and ClaimStateHistories.ToStateId = 60
  44.  
  45. --Распределение граждан по социальным программам
  46. --цифры не те
  47. declare @startDate datetime = '01.03.2017', @endDate datetime = '31.03.2017'
  48.  
  49. select SocialPrograms.Name, COUNT(SocialProgramParticipatings.PersonId) from SocialProgramParticipatings
  50. join SocialPrograms on SocialPrograms.Id = SocialProgramParticipatings.ProgramId
  51. where SocialProgramParticipatings.Start <= @startDate and (SocialProgramParticipatings.[End] >= @endDate or SocialProgramParticipatings.[End] is NULL)
  52. group by SocialPrograms.Name
  53.  
  54. --Держатели карт по полу
  55. --каждый гражданин учитывается только один раз с последней выданной картой (перевыпущенные не учитываются), период дат не применяется -- странная постановка
  56. --цифры не те?
  57.  
  58. drop view CardHolders
  59.  
  60. create view CardHolders as
  61. SELECT DISTINCT LastName, FirstName, MiddleName, BirthDate, Sex
  62. FROM PersonInfos INNER JOIN Cards
  63. ON Cards.Id = PersonInfos.Id and Cards.StateId <> 10;
  64.  
  65. select COUNT(Sex) from CardHolders
  66. group by Sex;
  67.  
  68. --Держатели карт по возрасту
  69. --не отображаются строки, где 0 держателей карт
  70. --цифры не те
  71.  
  72. drop view CardHolders
  73.  
  74. create view CardHolders as
  75. SELECT DISTINCT LastName, FirstName, MiddleName, BirthDate
  76. FROM PersonInfos INNER JOIN Cards
  77. ON Cards.Id = PersonInfos.Id and Cards.StateId <> 10;
  78.  
  79. create view AgeOfCardHolders as
  80. select BirthDate, YEAR(getdate()) - YEAR(BirthDate) as Age
  81. FROM CardHolders
  82. where MONTH(getdate()) >= MONTH(BirthDate) and DAY(getdate()) >= DAY(BirthDate)
  83. UNION ALL
  84. select BirthDate, YEAR(getdate()) - YEAR(BirthDate) - 1
  85. FROM CardHolders
  86. where not(MONTH(getdate()) >= MONTH(BirthDate) and DAY(getdate()) >= DAY(BirthDate)) ---возраст костыльный, есть 0 и -1
  87.  
  88. select COUNT(Age) from AgeOfCardHolders
  89. where Age between 55 and 59
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement