ورود

View Full Version : انتخاب top(5) از گروهای مختلف درselect



sanaz.dadkhah
جمعه 28 مهر 1391, 19:25 عصر
سلام من سه تیبل دارم
گروه : Group_id و Group_name
زیر گروه : Sub_Group_id و Group_id و Sub_group_name
مقالات : Sub_Group_id و article_id و Article_name
میخاهم که سلکتی انجام دهم که از هر زیر گروه 5 مقاله انتخاب شود
لطفا راهنمایی کنید

hassanf
شنبه 29 مهر 1391, 00:13 صبح
سلام،
اگر Sql Server که استفاده می نمایید 2005 به بعد می‌باشد می توانید از تابع Row_Number() (http://msdn.microsoft.com/en-us/library/ms186734.aspx) بصورت زیر استفاده نمایید.

With PartitionArticle
As(
Select Article.*,
SubGroup.Sub_Group_Name,
Row_Number() Over (Partition By Article.Sub_Group_Id Order By Article_Id) As R
From Article
Inner join SubGroup
On SubGroup.Sub_Group_Id = Article.Sub_Group_Id
)
Select *
From PartitionArticle
Where R <= 5

در واقع به Articleهایی که در هر زیرگروه می‌باشند، Rank می‌دهیم و بنابراین می‌توانیم تعداد مشخصی از هر زیرگروه را انتخاب نماییم.