1. Uczyć się
  2. /
  3. Courses
  4. /
  5. Analiza szeregów czasowych w SQL Server

Connected

Exercise

Obliczanie agregacji z filtrowaniem

Jeśli chcemy policzyć liczbę wystąpień jakiegoś zdarzenia spełniającego określone kryteria, możemy skorzystać z funkcji agregujących, takich jak SUM(), MIN() i MAX(), w połączeniu z wyrażeniami CASE. Na przykład SUM(CASE WHEN ir.IncidentTypeID = 1 THEN 1 ELSE 0 END) zwróci liczbę incydentów powiązanych z typem incydentu 1. Jeśli dodasz po jednej instrukcji SUM() dla każdego typu incydentu, przestawisz (spivottujesz) zbiór danych według identyfikatora typu incydentu.

W tym scenariuszu kierownictwo chce wiedzieć, ile było dni „dużych incydentów", a ile dni „małych incydentów" – z podziałem na typy incydentów. Dzień dużych incydentów to taki, w którym ten sam typ incydentu wystąpił więcej niż 5 razy. Dzień małych incydentów to taki, w którym ten sam typ incydentu wystąpił od 1 do 5 razy.

Instrukcje

100 XP
  • Uzupełnij wyrażenie CASE, które pozwoli użyć funkcji SUM() do obliczenia liczby dni dużych i małych incydentów.
  • W wyrażeniu CASE zwróć 1, jeśli odpowiednie kryterium filtrowania jest spełnione, i 0 w przeciwnym razie.
  • Pamiętaj, aby przy odwoływaniu się do kolumn podawać alias, np. ir.IncidentDate lub it.IncidentType!