سلام
دانش آموزانی وجود دارند که با خوب متوسط ظعیف در عملکرد درسی براشون رکورد ثبت شده . میخواهیم دانش آموزی که بیشتر ضعیف رو گرفته پیدا کنیم .
مثلا ده مورد ضعیف گرفته یکی ۵ مورد ضعیف گرفته و ...
Printable View
سلام
دانش آموزانی وجود دارند که با خوب متوسط ظعیف در عملکرد درسی براشون رکورد ثبت شده . میخواهیم دانش آموزی که بیشتر ضعیف رو گرفته پیدا کنیم .
مثلا ده مورد ضعیف گرفته یکی ۵ مورد ضعیف گرفته و ...
SELECT COUNT(s.IdWarehouseForms) AS Tedad,s.IdAgent FROM WareHouse.Inputs s
JOIN WareHouse.InputsDetails sdd ON sdd.IdInputs = s.Id
GROUP BY s.IdAgent
همچین چیزی میشه ساده بخوای ببینیش بعد یه سورت و top
از توابع رنکینگ میشه استفاده کرد
برای پیدا کردن دانشآموزی که بیشترین تعداد امتیاز "ضعیف" را دارد و بر اساس تعداد آنها به ترتیب نزولی مرتب شدهاند، میتوانید از دستور SQL زیر استفاده کنید. ابتدا تعداد امتیازهای "ضعیف" را با فرض اینکه را برای هر دانشآموز محاسبه کنید و نتیجه را در یک زیردستور (subquery) ذخیره کنید. سپس، در دستور اصلی، دانشآموزی که بیشترین تعداد امتیاز "ضعیف" را دارد را با استفاده از عبارت WHERE و ORDER BY بازیابی کنید. در اینجا دستور SQL ارائه شده است:
WITH WeakCountCTE AS (
SELECT StudentID, COUNT(*) AS WeakCount
FROM YourTableName
WHERE Score = 'ضعیف'
GROUP BY StudentID
)
SELECT TOP 1 StudentID
FROM WeakCountCTE
ORDER BY WeakCount DESC;
لطفاً نام جدول و نام ستونها را با نامهای واقعی در پایگاه دادهتان جایگزین کنید.
البته به جای
WHERE Score = 'ضعیف'
هم میتونین از ID مربوط به رکورد ضعیف استفاده کنین به شکل زیر:
WITH WeakCountCTE AS (
SELECT StudentID, COUNT(*) AS WeakCount
FROM YourTableName
WHERE ScoreID = 3
GROUP BY StudentID
)
SELECT TOP 1 StudentID
FROM WeakCountCTE
ORDER BY WeakCount DESC;