fbpx
SQL

تعلم لغة الاستعلام البنائية ( SQL ) – الدرس الحادي عشر النتائج المتمايزة Distinct Queries



تمكننا الاستعلامات المميزة من حساب عدد القيم الفريدة في جدول أو في مجموعة مجمعة من الصفوف.

للقيام بذلك ، يمكننا استخدام التوجيه DISTINCT. سيؤدي استعلام DISTINCT إلى إرجاع مجموعة من الإدخالات غير المكررة ، إذا كانت جميع الأعمدة لصفين أو أكثر تتطابق تمامًا.

مثال على حيث يمكن أن يكون هذا مفيدًا عندما نريد الحصول على قائمة بالأشخاص

دعونا نلقي نظرة على بعض الأمثلة:

CREATE TABLE grades (name TEXT, subject TEXT, grade INTEGER);

INSERT INTO grades (name, subject, grade) VALUES
    ("Ahmad", "CompSci", 97), ("Walid", "CompSci", 88), ("Amel", "Arts", 99),
    ("Ahmad", "History", 93), ("Hicham", "History", 82), ("Walid", "History", 87),  
    ("Yacine", "Physics", 91), ("Ahmad", "Physics", 84), ("Jamal", "Physics", 97);

SELECT "all names", COUNT(name) FROM grades;
SELECT "unique names", COUNT(DISTINCT name) FROM grades;
SELECT DISTINCT name FROM grades;

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

all names|9
unique names|6
Ahmad
Walid
Amel
Hicham
Yacine
Jamal

استعلام DISTINCT يشبه إلى حد كبير عبارة GROUP BY مع كل الأعمدة المحددة داخل العبارة. يؤدي هذا بشكل فعال إلى تجميع جميع الصفوف المتطابقة معًا. الفرق بين استعلام GROUP BY واستعلام DISTINCT هو أنه لا يمكنك حساب عدد التكرارات المتطابقة التي تم تحديدها لكل صف باستخدام استعلام DISTINCT. ومع ذلك ، فهو أكثر كفاءة من استعلام GROUP BY في معظم الأوقات.

تمرين

احصل على قائمة بجميع المواد المختلفة من جدول الدرجات.

CREATE TABLE grades (name TEXT, subject TEXT, grade INTEGER);

INSERT INTO grades (name, subject, grade) VALUES
    ("Ahmad", "CompSci", 97), ("Walid", "CompSci", 88), ("Amel", "Arts", 99),
    ("Ahmad", "History", 93), ("Hicham", "History", 82), ("Walid", "History", 87),  
    ("Yacine", "Physics", 91), ("Ahmad", "Physics", 84), ("Jamal", "Physics", 97);

-- enter code here
    

الحل

CREATE TABLE grades (name TEXT, subject TEXT, grade INTEGER);

INSERT INTO grades (name, subject, grade) VALUES
    ("Ahmad", "CompSci", 97), ("Walid", "CompSci", 88), ("Amel", "Arts", 99),
    ("Ahmad", "History", 93), ("Hicham", "History", 82), ("Walid", "History", 87),  
    ("Yacine", "Physics", 91), ("Ahmad", "Physics", 84), ("Jamal", "Physics", 97);

-- enter code here
SELECT DISTINCT subject FROM grades;

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

CompSci
Arts
History
Physics

الدرس الثاني عشر






Leave a Reply