راکت

limit در group by در mysql

2 پاسخ

سلام وقت همه دوستان بخیر باشه.
بنده یک سوال در زمینه mysql داشتم.
فرض کنید من یک جدول به شکل زیر دارم.
توضیح تصویر رو وارد کنید

در این جدول من 3 تا پارامتر یوزر ، ویدئو و سرعت دیده شده رو دارم.

حال سوال اینه که من میخوام میانگین سرعت 3 ویدئو ی آخر دیده شده ی هر کاربر در هر کورس رو بدست بیارم.
برای وصل شدن ویدئو به کورس، باید 2 تا جوین بین کورس و تاپیک و ویدئو داشته باشیم.

برای مثال من با کد زیر میانگین سرعت هر کاربر در یک کورس رو بدست میارم. ولی سوال اینه که چه طور میانگین 3 ویدئوی آخر رو بدست بیارم؟

SELECT avg(favorite_speed),favorite_speed.user_id,topics.course_id FROM favorite_speed,videos,topics WHERE favorite_speed.video_id=videos.id AND topics.id=videos.topic_id GROUP BY user_id,videos.topic_id  
ORDER BY `avg(favorite_speed)`  DESC

@ali.bayat @hesammousavi

ثبت پرسش جدید

پاسخ‌ها

2
حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

با رابطه join یا اصلا با where کردن آی دی کاربر سه رکورد اخر رو فیلتر میکنید و در نهایت اگر بخواید با query میانگین رو بدست بیارید با avg هم میشه

Eghbal Shirasb
Eghbal Shirasb
@eghbal1377

تخصص: طراح دیتابیس و متخصص backend asp.net core

من در آخر با row_number نوشتم.
دوستان دیگ هم که اگر به چنین مشکلی خوردن باید این کار رو بکنن.
فکر میکنم از نظر پرفورمنس جوین کردن 3 تا با هم. توی تیبلی ک 40 هزار تا داشته باشه اصلا شدنی نباشه...

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام