Ahmed Ebrahim11 نشر 3 يناير أرسل تقرير نشر 3 يناير (معدل) السلام عليكم هل يمكن المساعدة في فهم ال 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 يناير بواسطة Ahmed Ebrahim11 2 اقتباس
0 عبد الوهاب بومعراف نشر 3 يناير أرسل تقرير نشر 3 يناير المشكلة في استعلامك هو أنه يتحقق فقط من أقصى تاريخ، بينما المطلوب هو الحصول على آخر سعر قبل التاريخ المحدد لذا عدله للتالي: 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 محمد_عاطف نشر 3 يناير أرسل تقرير نشر 3 يناير وعليكم السلام ورحمة الله وبركاته. نحن هنا على موقع الأكاديمية لا نقوم بحل أسئلة الإختبارات ولكن نستطيع إرشادك إلى الحل الصحيح . لاحظ المشكلة لديك في الإستعلام أنك تقوم بوضع شرط إذا كان أقصى تاريخ للتعديل أقل من أو يساوي '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 نشر 3 يناير الكاتب أرسل تقرير نشر 3 يناير بتاريخ 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
تم التعديل في بواسطة Ahmed Ebrahim113 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.