View Full Version : سوال: راهنمایی در مورد یک کوئری
mehdi_moosavi
شنبه 28 فروردین 1389, 13:44 عصر
سلام بدوستان
فرض کنید مشخصات یکسری دانش آموز را در یک جدول داریم و یکی از فیلدها سن دانش آموز است.
من احتیاج به دستوری دارم که از هر سن فقط 10 تای اول را بیاورد. یعنی 10 تا 10 ساله و بعد 10 تا 11 ساله و بعد 10 تا 12 ساله و ... (یعنی از هر سنی فقط 10 تای اول)
لطفا راهنمایی کنید
با تشکر
محمد سلیم آبادی
شنبه 28 فروردین 1389, 21:20 عصر
SELECT *
FROM (SELECT *, Row_ID = ROW_NUMBER() OVER(PARTITION BY years_old ORDER BY student_ID ASC)
FROM table_student) AS D
WHERE Row_ID <=10
zmmehrdad
یک شنبه 29 فروردین 1389, 01:04 صبح
بسیار عالی بود
Modernidea
یک شنبه 29 فروردین 1389, 01:19 صبح
SELECT *
FROM (SELECT *, Row_ID = ROW_NUMBER() OVER(PARTITION BY years_old ORDER BY student_ID ASC)
FROM table_student) AS D
WHERE Row_ID <=10
یه توضیح کوچیک میدید؟
Row_ID به عنوان یک کانتر استفاده میشه؟ چجوری؟ :متفکر:
محمد سلیم آبادی
یک شنبه 29 فروردین 1389, 01:25 صبح
یه توضیح کوچیک میدید؟
Row_ID به عنوان یک کانتر استفاده میشه؟ چجوری؟ :متفکر:
من با کمک تابع ROW_NUMBER که جز توابع Ranking هست ابتدا سطرها را به بخشهایی تقسیم کردم بخشهایی که همه ی اعضای آن دارای یک مقدار یکسان در ستون سال هستند. سپس به هر بخش یک شماره از 1 تا n دادم (به ترتیب شماره دانش آموزی)
چون نمی توان از نام آن ستون (row_id) در همان SELECT استفاده کرد دوباره یک SELECT بیرونی گرفتم و فیلتر را اعمال کردم.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.