PDA

View Full Version : Sql server



hanie91
سه شنبه 10 مرداد 1402, 02:32 صبح
سلام...ی جدولی دارم با کد دانش اموزان و نمره.هر دانش اموز چندتا نمره داره..میخوام میانگین و نمره هر فرد و بدست بیارم و نفر دوم و معرفی کنم
Select top 1 codefard,avg(num) as average from tstudent
Where num<( select top 1 codefard,avg(num) as average from tstudent Group by codefard
Order by average desc)
Group by codefard
Order by average desc
نمیدونم داخل subquery و قسمت شرط where دقیقا چی بنویسم ...وقتی از max استفاده میکنم کل نمرات جدول ودرنظر میگیره نه میانگین هر فرد..میخوام ستون avg رو بدست میارم از همون ستون نفر دوم و بیاره...ممنون میشم راهنمایی کنید🙏

ROSTAM2
سه شنبه 10 مرداد 1402, 18:35 عصر
با سلام.
در صورت امکان پروژه رو آپلود کنید تا ان شاء الله دستور رو تصحیح کنیم.

hanie91
سه شنبه 10 مرداد 1402, 23:46 عصر
پروژه خاصی نیست..چون در حال یادگیری هستم.انواع حالت های مختلف و‌در نظر میگیرم و مینویسم ..برای خودم چالش ایجاد میکنم تا قسمت کوئری نوشتن و‌قوی بشم..این بخش از ساب کوئری برام سواله..اگر راهنمایی کنید ممنون میشم

ROSTAM2
شنبه 14 مرداد 1402, 09:31 صبح
پروژه خاصی نیست..چون در حال یادگیری هستم.انواع حالت های مختلف و‌در نظر میگیرم و مینویسم ..برای خودم چالش ایجاد میکنم تا قسمت کوئری نوشتن و‌قوی بشم..این بخش از ساب کوئری برام سواله..اگر راهنمایی کنید ممنون میشم

این سایت برای تمرین عالیه: https://www.w3schools.com/sql/sql_top.asp

Mahmoud.Afrad
پنج شنبه 19 مرداد 1402, 07:03 صبح
سوالتون اینه که کدام دانش آموز از نظر معدل نفر دوم شده؟

اگر بله،
راه اول اینه که معدل همه رو حساب و نزولی مرتب کرده و دو رکورد اول رو بگیرید. بعد صعودی مرتب کنید و اولین رکورد را سلکت کنید.

راه دوم استفاده از ROW_NUMBER() و سلکت رکوردی که ردیف دومه

راه سوم استفاده از offset/fetch در قسمت مرتب سازی
https://learn.microsoft.com/en-us/sql/t-sql/queries/select-order-by-clause-transact-sql