الدرس 10 من 10

القيم الفريدة

هدف الدرس

الكلمة DISTINCT والعدّ بـ COUNT(DISTINCT)

01

الشرح

يُرجع SELECT DISTINCT city FROM orders كل مدينة مرّة واحدة مهما تكرّرت، لكنه يعمل على الصفّ كلّه، فالأمر DISTINCT city, customer يحذف الأزواج المكرّرة فقط، فتتكرّر المدينة مع كل عميل مختلف.

وكذلك داخل العدّ، فـCOUNT(customer) تعدّ كل طلب فيه اسم عميل، فيُعدّ العميل الذي له ثلاثة طلبات ثلاث مرّات، أمّا COUNT(DISTINCT customer) فتعدّه مرّة واحدة.

والفرق بين الرقمين معلومة مفيدة في حدّ ذاتها، فكثرة الطلبات مع قلّة العملاء تعني أنّ العملاء يعودون للشراء.

02

المطلوب

اعرض لكل مدينة city وorders_count لعدد الطلبات وbuyers لعدد العملاء المختلفين.

الفحوص

4 فحوص
  1. الأعمدة city وorders_count وbuyers
  2. صفّ واحد لكل مدينة
  3. العمود orders_count يعدّ كل الطلبات
  4. العمود buyers يعدّ العميل مرّة واحدة
الجداول المتاحة في هذا الدرس
CREATE TABLE orders (
  id       INTEGER PRIMARY KEY,
  customer TEXT    NOT NULL,
  city     TEXT    NOT NULL,
  amount   INTEGER NOT NULL,
  rating   INTEGER
);

INSERT INTO orders (customer, city, amount, rating) VALUES
  ('ليان', 'الرياض', 120, 5),
  ('خالد', 'جدة',    300, 4),
  ('ليان', 'الرياض',  80, NULL),
  ('ريم',  'الدمام',  45, 3),
  ('سارة', 'الرياض', 210, 5),
  ('خالد', 'جدة',     50, NULL),
  ('فهد',  'جدة',    150, 2),
  ('نورة', 'الرياض',  95, 4),
  ('عمر',  'مكة',    400, NULL),
  ('ليان', 'الرياض',  35, 4),
  ('ريم',  'الدمام', 130, NULL),
  ('سارة', 'الرياض',  70, 3);
03

تلميحات

0/3
query.sql
المخرجاتSQLite (sql.js)

نحمّل بيئة SQLite الآن.

–/4

يبدأ الفحص حين تجهز البيئة.

تجد 4 فحوص في بطاقة «المطلوب».