الدرس 5 من 10
دوال التجميع
- 11 دقيقة
- 6 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
COUNT و SUM و AVG
الشرح
دوال التجميع تطوي الصفوف في قيمة واحدة: COUNT تعدّ، وSUM تجمع، وAVG تحسب المتوسط، وMIN وMAX تعطيان الطرفين. والقاعدة تحسبها قرب البيانات، فلا تنقل ألف صفّ إلى كودك لتجمعها هناك.
الفرق الذي يُنسى: COUNT(*) تعدّ الصفوف كلها، وCOUNT(rating) تعدّ ما ليس NULL فقط. فالطلب الذي لم يُقيَّم يدخل الأولى ويسقط من الثانية.
واسم العمود الناتج هو التعبير نفسه، مثل SUM(amount). وAS يسمّيه اسمًا يقرؤه الكود بعدك: SUM(amount) AS revenue.
المطلوب
من orders في صفّ واحد: orders_count عدد الطلبات، وrated_count المقيَّم منها، وrevenue مجموع amount، وavg_amount متوسطه، وmin_amount وmax_amount أصغره وأكبره.
معايير التصحيح
6 معايير- الأعمدة بأسمائها المطلوبة
- orders_count يعدّ كل الطلبات
- rated_count يتجاهل ما لا تقييم له
- revenue مجموع المبالغ
- avg_amount المتوسط بكسوره
- 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);