PDA

View Full Version : گرفتن معدل دانشجو؟



majidmir
پنج شنبه 13 خرداد 1389, 16:30 عصر
سلام يه Query واسه گرفتن معدل دانشجو ميخواستم اينو نوشتم ولي به گروه بندش خطا ميگيره
select stcot.coid, stt.stname, cot.cotitle,AVG(dbo.stcot.grade) AS 'معدل'
from stt join stcot
on stt.stid=stcot.stid
join cot
on stcot.coid=cot.coid
GROUP BY stcot.stid

pesar irooni
پنج شنبه 13 خرداد 1389, 17:04 عصر
دوست عزیز من اصلا query رو نخوندم و کاری به منطقش ندارم ولی هر چیزی که جلوی select میاد غیر از aggregate function ها همون ها باید جلوی group by هم بیاد. پس:

select stcot.coid, stt.stname, cot.cotitle,AVG(dbo.stcot.grade) AS 'معدل'
from stt join stcot
on stt.stid=stcot.stid
join cot
on stcot.coid=cot.coid
GROUP BY stcot.coid, stt.stname, cot.cotitle

majidmir
پنج شنبه 13 خرداد 1389, 19:11 عصر
دوست عزیز من اصلا query رو نخوندم و کاری به منطقش ندارم ولی هر چیزی که جلوی select میاد غیر از aggregate function ها همون ها باید جلوی group by هم بیاد. پس:

select stcot.coid, stt.stname, cot.cotitle,AVG(dbo.stcot.grade) AS 'معدل'
from stt join stcot
on stt.stid=stcot.stid
join cot
on stcot.coid=cot.coid
GROUP BY stcot.coid, stt.stname, cot.cotitle
سلام
دوست عزيز درسته ولي
SELECT type, AVG(price) FROM titles WHERE royalty = 10 GROUP BY type
اين يكي از مثال هاي خود sql هستش
خو الان كه من ميخواهم معدل و نام دانشجو رو بگيرم بايد چكار كنم ؟

محمد سلیم آبادی
پنج شنبه 13 خرداد 1389, 19:13 عصر
بهترین این هست که یک نمونه داده از هر سه جدول مذکور (یعنی cot و stt و stcot) به شکل جدول ارسال کنید و مشخص کنید هر ستون مربوط به چی هست و اینکه کدام ستون کلید اصلی و کدام ستون کلید خارجی هست و در پایان نتیجه ی (result) مورد نظری که آرزوی مشاهده ی آن را دارید را قرار بدین تا بشه کوئری را براتون خلق کرد.

majidmir
پنج شنبه 13 خرداد 1389, 19:47 عصر
سلام
سه تا جدول دارم اولي واسه مشخصات دانشجويان دومي مشخصات دروس و سومي مربوط به انتخاب واحد ميشه

محمد سلیم آبادی
پنج شنبه 13 خرداد 1389, 19:52 عصر
اینو امتحان کنید:

SELECT T.*, D.[AVG]
FROM
(
SELECT stid, AVG(grade) AS [AVG]
FROM Entekhabe_vahed_table
GROUP BY stid
) As D
INNER JOIN table_student AS T
ON D.stid = T.stid;

pesar irooni
جمعه 14 خرداد 1389, 03:50 صبح
احتمالا منظورت این جوری بوده ولی query آقای msalim سریع تر اجرا میشه چون اول select کرده باد join زده

select stt.stname,avg(stcot.grade)
from stt inner join stcot
on stt.stid = stcot.stid
group by stname
فقط نمیدونم چرا تو query اولی ات نام درس رو هم آوردی. مگه هر درس معدل داره؟ کله درسا رو هم معدل دارند.
ضمن من فک میکنم یه جدوله گروه رو جا انداختی. هر درس ممکنه تو چند گروه تو ساعات مختلف ارائه بشه. البته این به سیستمت بستگی داره

محمد سلیم آبادی
جمعه 14 خرداد 1389, 12:38 عصر
خو الان كه من ميخواهم معدل و نام دانشجو رو بگيرم بايد چكار كنم ؟
به این جمله فوق توجه نکرده بودم. فکر می کردم تمام خصیصه های موجودیت دانشجو را همراه با معدلشون نیاز دارین. پس کوئری پست قبلی کارتون را به سادگی راه می اندازد.
و همچنین از داده های جدول سوم در این گزارش گیری استفاده نمیشه.

محمد سلیم آبادی
جمعه 14 خرداد 1389, 13:49 عصر
فقط نمیدونم چرا تو query اولی ات نام درس رو هم آوردی. مگه هر درس معدل داره؟ کله درسا رو هم معدل دارند
من فکر می کنم، حتما منظورش این بوده که درسهای هر دانشجو به شکل یک لیست به هم الحاق بشند. مثلا دانشجویی با شماره ی 100 دو درس VB و DB انتخاب کرده و میانگین این دو درسم... چی نمره 21 در درس DB گرفته!! ببینید وقتی میگم جامعیت داده ها چقدر اهمیت داره برای همین مواقع است...

پس یکی از سطرهای نتیجه ی مطلوب این است:

Result Set = { {'a b', (21+16)/2, 'DB,VB'}, ... } --end


چون نام دانشجو از ترکیب نام کوچک و نام خانوادگی هست من این دو را با یکدیگر الحاق کردم و نمایش دادم.

محمد سلیم آبادی
شنبه 15 خرداد 1389, 18:37 عصر
احتمالا منظورت این جوری بوده ولی query آقای msalim سریع تر اجرا میشه چون اول select کرده باد join زده

select stt.stname,avg(stcot.grade)
from stt inner join stcot
on stt.stid = stcot.stid
group by stname
فقط نمیدونم چرا تو query اولی ات نام درس رو هم آوردی. مگه هر درس معدل داره؟ کله درسا رو هم معدل دارند.
ضمن من فک میکنم یه جدوله گروه رو جا انداختی. هر درس ممکنه تو چند گروه تو ساعات مختلف ارائه بشه. البته این به سیستمت بستگی داره

جایی به unique بودن ستون stname اشاره شده بود؟
اگر دو نام یکسان داشته باشیم آن وقت سرنوشت کوئری چه خواهد بود؟

پس باید در ماده ی گروه بای از مجموعه ی زیر استفاده بشه:
student_number, student_name

pesar irooni
چهارشنبه 19 خرداد 1389, 01:29 صبح
پس باید در ماده ی گروه بای از مجموعه ی زیر استفاده بشه:
student_number, student_name
در تکمیل فرمایشات شما و برای آقای majidmir
توجه بشه که student_number بتنهایی کافیه و student_name فقط برای این اومده که میخوایم نام دانشجو هم نمایش داده بشه!!!
چون نام به شماره دانشجویی وابستگی تابعی داره