SQL

تعلم لغة الاستعلام البنائية ( SQL ) – الدرس الثامن إستعلام Group by

إستعلام GROUP BY هو الإستعلام الأكثر أهمية لأغراض التحليلات ، وتزودنا بالقدرة على تجميع مجموعة من الصفوف وتلخيص نتيجة منها. على سبيل المثال – باستخدام قاعدة بيانات العملاء والطلبات ، يمكننا استخدام عبارة GROUP BY لحساب عدد الطلبات لكل عميل.

لنأخذ قاعدة بيانات عملائنا ونحسب عدد الطلبات لكل عميل

CREATE TABLE customers (
    id INTEGER PRIMARY KEY,
    first_name TEXT,
    last_name TEXT
);

CREATE TABLE orders (
    id INTEGER PRIMARY KEY,
    customer_id INTEGER,
    product_name TEXT
);

INSERT INTO customers (first_name, last_name) VALUES
    ("Ahmad", "Hicham");

INSERT INTO orders (customer_id, product_name) VALUES
    (last_insert_rowid(), "Coke"),
    (last_insert_rowid(), "Sprite");

INSERT INTO customers (first_name, last_name) VALUES
    ("Walid", "Yacine");

INSERT INTO orders (customer_id, product_name) VALUES
    (last_insert_rowid(), "Doritos");

.mode column
.headers on
SELECT first_name, last_name, COUNT(*) AS total_orders FROM customers
JOIN orders ON orders.customer_id = customers.id
GROUP BY orders.customer_id;

سنحصل على النتيجة التالية عند التشغيل

first_name  last_name   total_orders
----------  ----------  ------------
Ahmad        Hicham         2           
Walid        Yacine       1 

تمرين

اكتب استعلامًا يوضح الاسم الأول وعدد الطلبات المتاحة لكل شخص في قاعدة البيانات.

CREATE TABLE customers (
    id INTEGER PRIMARY KEY,
    first_name TEXT,
    last_name TEXT
);

CREATE TABLE orders (
    id INTEGER PRIMARY KEY,
    customer_id INTEGER,
    product_name TEXT
);

INSERT INTO customers (first_name, last_name) VALUES
    ("Ahmad", "Hicham");

INSERT INTO orders (customer_id, product_name) VALUES
    (last_insert_rowid(), "Coke"),
    (last_insert_rowid(), "Sprite");

INSERT INTO customers (first_name, last_name) VALUES
    ("Walid", "Yacine");

INSERT INTO orders (customer_id, product_name) VALUES
    (last_insert_rowid(), "Doritos");

-- أدخل رمزك هنا

الحل

CREATE TABLE customers (
    id INTEGER PRIMARY KEY,
    first_name TEXT,
    last_name TEXT
);

CREATE TABLE orders (
    id INTEGER PRIMARY KEY,
    customer_id INTEGER,
    product_name TEXT
);

INSERT INTO customers (first_name, last_name) VALUES
    ("Ahmad", "Hicham");

INSERT INTO orders (customer_id, product_name) VALUES
    (last_insert_rowid(), "Coke"),
    (last_insert_rowid(), "Sprite");

INSERT INTO customers (first_name, last_name) VALUES
    ("Walid", "Yacine");

INSERT INTO orders (customer_id, product_name) VALUES
    (last_insert_rowid(), "Doritos");

-- أدخل رمزك هنا
SELECT first_name, COUNT(*) AS total_orders FROM customers
JOIN orders ON orders.customer_id = customers.id
GROUP BY orders.customer_id;

سنحصل على النتيجة التالية عند التشغيل

Ahmad|2
Walid|1

الدرس التاسع






Leave a Reply