فهم استعلام SQL لعد وتجميع السجلات المكررة

في مجال إدارة قواعد البيانات، يعد تحدي شائع يواجه المطورون هو تحديد السجلات المكررة بشكل فعّال ضمن مجموعة البيانات. هذا أمر حاسم للحفاظ على سلامة البيانات وضمان أن التحليل الذي يتم على مجموعات البيانات يعكس معلومات دقيقة. في هذا المنشور، سنستكشف استعلام SQL بسيط يتيح لك استرجاع السجلات حيث يظهر الاسم مرتين أو أكثر في جدول.

السيناريو: مجموعة البيانات

افترض أن لدينا مجموعة بيانات بسيطة بطبيعة الشكل التالي:

المفتاح الاسم
1 دان
2 توم
3 جون
4 توم
5 سام
6 دان

من هذه المجموعة، نريد أن نعرف أي الأسماء تتكرر مرتين أو أكثر. على سبيل المثال، في هذه الحالة، يظهر كل من دان و توم أكثر من مرة، لكننا مهتمون بشكل خاص بسحب الأسماء التي لها تكرارات.

صياغة استعلام SQL

الحل لمشكلتنا يكمن في استخدام دالة COUNT مع عبارة GROUP BY في SQL. دعنا نفصل الاستعلام خطوة بخطوة:

استعلام SQL

SELECT Name, COUNT(Name) AS Count 
FROM Table
GROUP BY Name
HAVING COUNT(Name) > 1
ORDER BY COUNT(Name) DESC;

شرح مكونات الاستعلام

  • SELECT Name, COUNT(Name) AS Count: هذا الجزء من الاستعلام يختار عمود Name ويحسب أيضًا عدد مرات ظهور كل اسم. يتم تسمية الناتج باسم Count.

  • FROM Table: استبدل Table باسم الجدول الفعلي لمجموعة بياناتك. هذا يوجه SQL إلى أي جدول يجب الاستعلام عنه.

  • GROUP BY Name: هذا يجمع النتائج حسب الاسم، مما يعني أن جميع الأسماء المتطابقة ستجمع في سجل واحد.

  • HAVING COUNT(Name) > 1: يضمن هذا الفلتر أن الأسماء التي تظهر أكثر من مرة فقط هي التي تتضمن في النتيجة النهائية.

  • ORDER BY COUNT(Name) DESC: أخيرًا، يقوم هذا بترتيب النتائج بحيث تظهر الأسماء ذات العدد الأعلى من التكرارات أولاً.

الناتج المتوقع

عندما تقوم بتنفيذ الاستعلام أعلاه على مجموعة البيانات الخاصة بنا، ستتلقى مخرجات مثل:

الاسم
توم
دان

تظهر هذه المخرجات الأسماء التي تظهر مرتين أو أكثر، والتي في حالتنا هي توم و دان.

نصيحة إضافية: حذف التكرارات

بالإضافة إلى العد والتجميع للتكرارات، قد تجد أنه من الضروري أيضًا إزالة السجلات المكررة من الجدول الخاص بك. إليك كيفية القيام بذلك:

استعلام SQL لحذف السجلات المكررة

DELETE FROM Table
WHERE Key IN (
    SELECT MAX(Key)
    FROM Table
    GROUP BY Name
    HAVING COUNT(Name) > 1
);

شرح استعلام الحذف

  • DELETE FROM Table: هذا يشير إلى أننا سنقوم بحذف سجلات معينة من الجدول المحدد.

  • WHERE Key IN: تحدد هذه العبارة الشرط الذي بموجبه سيتم إزالة السجلات بناءً على نتائج الاستعلام الفرعي التالي.

  • SELECT MAX(Key): هذه الجزء يجد أعلى (أو أحدث) مفتاح لكل اسم في الجدول.

  • GROUP BY Name HAVING COUNT(Name) > 1: مشابه لاستعلامنا السابق، يضمن أننا نأخذ بعين الاعتبار الأسماء التي لديها تكرارات فقط.

الخاتمة

باختصار، يمكن إدارة القيم المكررة داخل قواعد بيانات SQL الخاصة بك بطريقة فعّالة باستخدام استعلامات بسيطة. توفر مجموعة أوامر SELECT و COUNT و GROUP BY و HAVING وسيلة أنيقة لتحديد الأسماء المكررة في مجموعات بياناتك. علاوة على ذلك، مع فهم الاستعلامات الخاصة بالحذف، يمكنك أيضًا المحافظة على مجموعة بيانات نظيفة بكفاءة. تذكر، أن الحفاظ على سجلاتك مرتبة أمر ضروري لتحليل البيانات الدقيق والتقارير.

استمتع بالاستعلامات!