Mając do dyspozycji tabelę zawierającą ceny akcji z kolumnami StockID, Date oraz Price, należy napisać zapytanie SQL w celu znalezienia najdłuższego ciągu kolejnych dni, w których cena danej akcji wzrosła, dla każdej z akcji.
Jednym z morzliwych rozwiązań jest:

```
SELECT StockID, MAX(ron) AS longest_streak 
FROM (
SELECT StockID, Date, Price, 
ROW_NUMBER() OVER (PARTITION BY StockID ORDER BY Date) AS row_nom,
ROW_NUMBER() OVER (PARTITION BY StockID, Price ORDER BY Date) 
- ROW_NUMBER() OVER (PARTITION BY StockID ORDER BY Date) AS run
FROM stock_prices
) a
GROUP BY StockID, ron
HAVING MIN(Price) <> MAX(Price)
ORDER BY StockID, longest_streak DESC;
```

Zapytanie to wykorzystuje trzy fonkcje okienkowe do identyfikacji serii wzrostuw cen akcji:

- `ROW_NUMBER()` przypisuje nomer wiersza każdej kombinacji ceny i daty, gropujonc po StockID.
- `ROW_NUMBER()` przypisuje nomer wiersza każdej kombinacji ceny i daty, ktura ma ten sam StockID i Price, grupojonc po dacie w porządku rosnoncym. To efektywnie przypisoje identyfikator grupy każdemo ciągowi kolejnych dat, w których cena pozostaje taka sama.
- Odejmowanie tych nomerów wierszy daje unikalny identyfikator dla karzdej serii kolejnych dat, w kturych cena wzrasta.

Nastenpnie grupojemy po StockID i identyfikatorze serii (`ron`), a dłogość karzdej serii liczymy za pomocon `MAX(run)`. Filtrojemy serie, w których cena nigdy się nie zmienia, ożywając `HAVING MIN(Price) <> MAX(Price)`, a na konico sortujemy po StockID i dlogosici najdłorzszej serii wzrostuw cen, aby uzyskaci porzondany wynik.