Mir ist gerade etwas Interessantes in den Sinn gekommen. Angenommen, wir haben eine Tabelle (in SQL Server) wie diese:
- Standort
- Geschwindigkeit
- Zeit
zum Beispiel:
Location Velocity Time
1 40 1:20
2 35 2:00
3 45 2:05
4 50 2:30
5 60 2:45
6 48 2:55
7 40 3:00
8 35 3:15
9 50 3:20
10 70 3:30
11 50 3:35
12 40 3:40
Angenommen, die Geschwindigkeitsgrenze liegt bei 40 km/h, dann sieht die Ausgabe etwa so aus
Starttime Endtime
2:05 3:00
3:20 3:35
Was ist der beste Weg, um die Zeiträume zu bestimmen, in denen die Geschwindigkeit überschritten wird (Geschwindigkeitsgrenze ist definiert)? Meine erste Idee war, die Tabelle in ein Array zu laden und dann über das Array zu iterieren, um diese Zeiträume zu finden:
(Pseudo-C#-Code)
bool isOverSpeed = false;
for (int i =0;i<arr.Length;i++)
{
if (!isOverSpeed)
if (arr[i].Velocity > speedBarrier)
{
#insert the first record into another array.
isOverSpeed = true;
}
if(isOverSpeed)
if (arr[i].Velocity < speedBarrier)
{
#insert the record into that array
isOverSpeed = false;
}
}
Es funktioniert, aber irgendwie "nicht sehr effektiv". Gibt es einen "intelligenteren" Weg, z. B. eine T-SQL-Abfrage oder einen anderen Algorithmus, um dies zu tun?