كيف أجد أول تاريخ وآخر تاريخ لكل عميل في SQL؟

سهلقراءة دقيقةآخر تحديث 2 أكتوبر 2026

SQL قواعد البيانات

الإجابة

لا يقتصر استخدام MIN وMAX على الأسعار والأعداد. يمكن تطبيقهما على عمود من النوع DATE لاستخراج أقدم تاريخ وأحدث تاريخ. وعند جمعهما مع GROUP BY customer_id، تحصل على حدود الفترة الخاصة بكل عميل، بدلا من حدود الفترة الخاصة بجميع العملاء معا.

مثال

SELECT customer_id,
       MIN(order_date) AS first_order,
       MAX(order_date) AS last_order
FROM orders
GROUP BY customer_id;

يعيد الاستعلام صفا واحدا لكل عميل موجود في جدول الطلبات. يحتوي الصف على معرف العميل وتاريخ أول طلب وتاريخ آخر طلب له. إذا كان لدى العميل طلب واحد بتاريخ معروف، فسيتساوى التاريخان، وهذا لا يعني وجود خطأ في الاستعلام.

تتجاهل الدالتان التواريخ المفقودة. وإذا كانت جميع تواريخ مجموعة معينة مفقودة، تظهر NULL في كلا العمودين. انتبه أيضا إلى أن استخراج أحدث تاريخ لا يستخرج تلقائيا باقي تفاصيل الطلب الذي وقع في ذلك التاريخ.

باختصار: اجمع حسب العميل، ثم طبق MIN وMAX على عمود التاريخ لتحديد بداية نشاطه ونهايته.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر فهمك

أي زوج من التعبيرات يكمل الاستعلام لإظهار أول تاريخ طلب وآخر تاريخ طلب لكل عميل؟

CREATE TABLE orders (
  id INT PRIMARY KEY,
  customer_id INT,
  order_date DATE
);
-- استبدل التعليق بالتعبيرين المناسبين.
SELECT customer_id,
       /* expressions */
FROM orders
GROUP BY customer_id;