Nimetu
Selleks loome funktsiooni, mis loetleb
meile ülesse konkreetse linna kõige pikemad lapsed:
CREATE FUNCTION dbo.fn_Pikimad (@LinnID int, @Top int)
RETURNS TABLE
AS
RETURN SELECT TOP (@Top) *
FROM dbo.Laps_tbl
WHERE SynniLinn = @LinnID
ORDER BY Pikkus DESC
Selleks, et vaadata seda infot konkreetsete linnade kaupa saame kirjutada päringu:
SELECT *
FROM dbo.Linn_tbl
CROSS APPLY dbo.fn_Pikimad(LinnID, 2)
Nummerdamised
ROW_NUMBER() nummerdab kõik read tulemuses
RANK() ütleb, mitmes on loetelus antud väärtus
DENSE_RANK() analoogne RANK funktsiooniga, kuid ei jäta numbreid vahele
NTILE(n) jagab tulemuse N grupiks
Kõiki nummerdamise funktsioone on võimalik kasutada ka üle gruppide jagades andmed sobiva
tunnuse alusel partitsioonideks:
Vaade
Sagedamini vajaminevad päringud on mõistlik vormistada vaatena. Nõnda optimeerib server