SQL Server – Her Grubun içerisinde x kaydı listeleme

By | 12 April 2013

Merhabalar,

Araba marka ve modellerini tuttuğumuz bir tablo olduğunu varsayalım. Birde fiyat bilgimiz olsun. Yapmak istediğimiz her markanın en pahalı 2 modelini getirmek. Diğerlerini istemiyoruz. Aşağıdaki kodlar işinize yarayacaktır.

-- Table ı create edelim
DECLARE @Tablom table
(  KayitID       int   IDENTITY,
Marka         varchar(50),
Model         varchar(50),
Fiyat         decimal(10,2)
)
-- Kayıtları ekleyelim
INSERT INTO @Tablom VALUES ( 'Mercedes', 'SLK', 220000 )
INSERT INTO @Tablom VALUES ( 'Mercedes', 'E200', 120000 )
INSERT INTO @Tablom VALUES ( 'Mercedes', 'S500', 320000 )
INSERT INTO @Tablom VALUES ( 'Mercedes', 'C200', 100000 )
INSERT INTO @Tablom VALUES ( 'BMW', '7.50', 440000 )
INSERT INTO @Tablom VALUES ( 'BMW', '3.25', 110000 )
INSERT INTO @Tablom VALUES ( 'BMW', '3.20', 80000 )
INSERT INTO @Tablom VALUES ( 'BMW', '5.25', 240000 )
INSERT INTO @Tablom VALUES ( 'Opel', 'Corsa', 60000 )
INSERT INTO @Tablom VALUES ( 'Opel', 'Vectra', 80000 )
-- Sorgu cümlemiz
SELECT
KayitID,
Marka,
Model,
Fiyat
FROM (SELECT
ROW_NUMBER() OVER ( PARTITION BY Marka ORDER BY Fiyat DESC ) AS 'KayitSirasi',
KayitID,
Marka,
Model,
Fiyat
FROM @Tablom
) t
WHERE KayitSirasi <= 2
Share

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.