الدرس 5 من 10

دوال التجميع

هدف الدرس

COUNT و SUM و AVG

01

الشرح

دوال التجميع تطوي الصفوف في قيمة واحدة: COUNT تعدّ، وSUM تجمع، وAVG تحسب المتوسط، وMIN وMAX تعطيان الطرفين. والقاعدة تحسبها قرب البيانات، فلا تنقل ألف صفّ إلى كودك لتجمعها هناك.

الفرق الذي يُنسى: COUNT(*) تعدّ الصفوف كلها، وCOUNT(rating) تعدّ ما ليس NULL فقط. فالطلب الذي لم يُقيَّم يدخل الأولى ويسقط من الثانية.

واسم العمود الناتج هو التعبير نفسه، مثل SUM(amount). وAS يسمّيه اسمًا يقرؤه الكود بعدك: SUM(amount) AS revenue.

02

المطلوب

من orders في صفّ واحد: orders_count عدد الطلبات، وrated_count المقيَّم منها، وrevenue مجموع amount، وavg_amount متوسطه، وmin_amount وmax_amount أصغره وأكبره.

معايير التصحيح

6 معايير
  1. الأعمدة بأسمائها المطلوبة
  2. orders_count يعدّ كل الطلبات
  3. rated_count يتجاهل ما لا تقييم له
  4. revenue مجموع المبالغ
  5. avg_amount المتوسط بكسوره
  6. min_amount و max_amount الطرفان
الجداول المتاحة في هذا الدرس
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…

–/6

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

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