1. Learn
  2. /
  3. Курси
  4. /
  5. Аналіз часових рядів у SQL Server

Connected

Вправа

Обчислення агрегатів з фільтрацією

Якщо потрібно порахувати кількість появ події за певними критеріями фільтрації, можна скористатися агрегатними функціями, як-от SUM(), MIN() і MAX(), а також виразами CASE. Наприклад, SUM(CASE WHEN ir.IncidentTypeID = 1 THEN 1 ELSE 0 END) поверне кількість інцидентів, пов'язаних із типом інциденту 1. Якщо додати по одному виразу SUM() для кожного типу інциденту, ви фактично виконаєте зведення (pivot) за ідентифікатором типу інциденту.

У цій ситуації керівництво хоче отримати від нас, у розрізі типів інцидентів, скільки було днів із «великими інцидентами» порівняно з «малими інцидентами». Керівництво визначає день із великими інцидентами як такий, коли було понад 5 випадків одного й того самого типу інциденту протягом дня, а день із малими інцидентами — коли від 1 до 5.

Інструкції

100 XP
  • Заповніть вираз CASE, який дасть змогу використати функцію SUM() для обчислення кількості днів із великими та малими інцидентами.
  • У виразі CASE повертайте 1, якщо відповідний критерій фільтра виконано, і 0 — інакше.
  • Обов'язково вказуйте псевдонім під час посилання на стовпці, наприклад ir.IncidentDate або it.IncidentType!