الدرس 6 من 10
التجميع في مجموعات
- 12 دقيقة
- 5 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
GROUP BY
01
الشرح
GROUP BY city يقسم الصفوف مجموعات بحسب المدينة، ثم تعمل دوال التجميع على كل مجموعة وحدها: صفّ لكل مدينة بدل صفّ للجدول كلّه.
فسؤال «كم طلبًا في كل مدينة؟» يصير SELECT city, COUNT(*) FROM orders GROUP BY city.
الفخّ: كل عمود في SELECT إمّا مذكور في GROUP BY أو داخل دالة تجميع. لو أضفت customer لأعطتك SQLite اسمًا من صفّ ما في المجموعة بلا تحذير، أمّا PostgreSQL فترفض الاستعلام.
02
المطلوب
لكل مدينة اعرض city وorders_count عدد طلباتها وrevenue مجموع مبالغها، مرتّبة من الأعلى إيرادًا.
معايير التصحيح
5 معايير- الأعمدة city و orders_count و revenue
- صفّ واحد لكل مدينة
- عدد الطلبات صحيح لكل مدينة
- الإيراد صحيح لكل مدينة
- مرتّبة من الأعلى إيرادًا
الجداول المتاحة في هذا الدرس
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);