با استفاده از توابع UCASE, LCASE, LENGTH, ROUND, NOW و COALESCE یک پرسوجو SQL بنویسید که نام مشتری را با UCASE بزرگحروف کند، ایمیلهای NULL یا خالی را با 'noemail@example.com' جایگزین کند، طول نام را با LENGTH نمایش دهد، مجموع سفارشات را با ROUND به دو رقم اعشار گرد کند و تاریخ آخرین سفارش را با NOW مقایسه کند تا مشخص شود آیا سفارش اخیر در 30 روز گذشته بوده است.
2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 03:05 0.0
برای حل این سوال یک SELECT روی جدول مشتریان (مثلاً customers) بنویسید و برای هر ستون از توابع خواستهشده استفاده کنید؛ مثلاً UCASE(name) یا LCASE(name) برای تبدیل حروف، LENGTH(name) برای طول رشته، ROUND(total_amount,2) برای گرد کردن عدد، NOW() برای تاریخ/زمان فعلی و COALESCE(email,'noemail@example.com') برای جایگزینی مقادیر NULL یا خالی. توجه کنید که NVL در اوراکل و IFNULL در مایاسکیوال مشابه COALESCE هستند، پس بسته به دیتابیس خود از تابع مناسب استفاده کنید؛ مقایسه تاریخ را با تفاضل روزها (مثلاً DATEDIFF یا مقایسه DATE_SUB(NOW(), INTERVAL 30 DAY)) انجام دهید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای جایگزینی ایمیلهای NULL یا خالی از ترکیب COALESCE با NULLIF استفاده کنید تا هم NULL و هم مقدار خالی '' پوشش داده شود. برای چک کردن اینکه آخرین سفارش در 30 روز گذشته است، شرطی مانند last_order_date >= NOW() - INTERVAL 30 DAY به کار ببرید. توجه کنید LENGTH(name) طول کاراکترها را میدهد اما در برخی پایگاههای داده ممکن است کاراکترهای یونیک طول متفاوتی داشته باشند؛ در این صورت استفاده از CHAR_LENGTH پیشنهاد میشود. همچنین از UCASE(name) یا LCASE(name) برای تغییر حالت حروف و ROUND(total_amount,2) برای گردکردن مقدار کل به دو رقم اعشار استفاده کنید.
گزارش