الدرس 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);
query.sql
المخرجاتSQLite · sql.js

جارٍ تحميل SQLite…

–/4

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

4 معايير في بطاقة «المطلوب».