Ahmed Ebrahim11 نشر الجمعة في 12:10 أرسل تقرير نشر الجمعة في 12:10 (معدل) السلام عليكم هل يمكن المساعدة في فهم ال queries هنا المسالة في الصورة وهذا الكود الخاص بي ولكن لا يعمل مالسبب # Write your MySQL query statement below select product_id, IF ( max(change_date) <= '2019-08-16',new_price, 10) as price from Products group by product_id تم التعديل في الجمعة في 12:24 بواسطة Ahmed Ebrahim11 2 اقتباس
0 عبد الوهاب بومعراف نشر الجمعة في 13:24 أرسل تقرير نشر الجمعة في 13:24 المشكلة في استعلامك هو أنه يتحقق فقط من أقصى تاريخ، بينما المطلوب هو الحصول على آخر سعر قبل التاريخ المحدد لذا عدله للتالي: SELECT product_id, COALESCE( (SELECT new_price FROM Products p2 WHERE p2.product_id = p1.product_id AND p2.change_date <= '2019-08-16' ORDER BY change_date DESC LIMIT 1), 10 ) as price FROM Products p1 GROUP BY product_id; بحيث نستخدم استعلام فرعي للحصول على آخر سعر قبل '2019-08-16' و COALESCE يرجع 10 إذا لم يجد سعرا قبل التاريخ المحدد وأخيرا ORDER BY change_date DESC LIMIT 1 يجلب أحدث سعر. 1 اقتباس
0 محمد عاطف17 نشر الجمعة في 16:51 أرسل تقرير نشر الجمعة في 16:51 وعليكم السلام ورحمة الله وبركاته. نحن هنا على موقع الأكاديمية لا نقوم بحل أسئلة الإختبارات ولكن نستطيع إرشادك إلى الحل الصحيح . لاحظ المشكلة لديك في الإستعلام أنك تقوم بوضع شرط إذا كان أقصى تاريخ للتعديل أقل من أو يساوي '2019-08-16' فهنا أنت ستأخذ قيمة new_price وإلا فسيتم وضع قيمة 10 تلقائيا . الخطأ في الشرط عندما يكون قيمة max(change_date) أكبر من '2019-08-16' ولكن المنتج لديه تعديل للسعر قبل هذا التاريخ هنا الإستعلام الخاص بك سيضع 10 بدلا من أخذ السعر قبل التاريخ '2019-08-16' . وأيضا يوجد خطأ أخر لديك أنه في MAX() تستخدمها لتحديد آخر تاريخ تعديل، ولكن العمود new_price غير مجمع أى أن mysql لا تستطيع التعامل معه وتجميعه إذا كان هناك أكثر من حقل له نفس ال product_id . و هذا يؤدي إلى نتائج غير متوقعة لأن قيمة new_price لن تتوافق مع تاريخ التعديل المحدد. لذلك يجب عليك في الحل أولا البحث عن التواريخ التي أقل من أو تساوي '2019-08-16' وحينها تأخذ قيمة new_price لأعلي تاريخ . أما إذا كان هنا منتج لا توجد لديه تعديلات قبل تاريخ '2019-08-16' فإذا تضع رقم 10. 1 اقتباس
0 Ahmed Ebrahim11 نشر الجمعة في 16:54 الكاتب أرسل تقرير نشر الجمعة في 16:54 بتاريخ 1 دقيقة مضت قال محمد عاطف17: وعليكم السلام ورحمة الله وبركاته. نحن هنا على موقع الأكاديمية لا نقوم بحل أسئلة الإختبارات ولكن نستطيع إرشادك إلى الحل الصحيح . لاحظ المشكلة لديك في الإستعلام أنك تقوم بوضع شرط إذا كان أقصى تاريخ للتعديل أقل من أو يساوي '2019-08-16' فهنا أنت ستأخذ قيمة new_price وإلا فسيتم وضع قيمة 10 تلقائيا . الخطأ في الشرط عندما يكون قيمة max(change_date) أكبر من '2019-08-16' ولكن المنتج لديه تعديل للسعر قبل هذا التاريخ هنا الإستعلام الخاص بك سيضع 10 بدلا من أخذ السعر قبل التاريخ '2019-08-16' . وأيضا يوجد خطأ أخر لديك أنه في MAX() تستخدمها لتحديد آخر تاريخ تعديل، ولكن العمود new_price غير مجمع أى أن mysql لا تستطيع التعامل معه وتجميعه إذا كان هناك أكثر من حقل له نفس ال product_id . و هذا يؤدي إلى نتائج غير متوقعة لأن قيمة new_price لن تتوافق مع تاريخ التعديل المحدد. لذلك يجب عليك في الحل أولا البحث عن التواريخ التي أقل من أو تساوي '2019-08-16' وحينها تأخذ قيمة new_price لأعلي تاريخ . أما إذا كان هنا منتج لا توجد لديه تعديلات قبل تاريخ '2019-08-16' فإذا تضع رقم 10. شكرا استاذي ولكن هذا ليس اختبار اقوم فقط بالتدريب علي leetcode 1 اقتباس
السؤال
Ahmed Ebrahim11
السلام عليكم
هل يمكن المساعدة في فهم ال queries هنا
المسالة في الصورة وهذا الكود الخاص بي ولكن لا يعمل مالسبب
# Write your MySQL query statement below select product_id, IF ( max(change_date) <= '2019-08-16',new_price, 10) as price from Products group by product_id
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.