انتقل إلى المحتوى

مساعدة:استعلام

من ويكيبيديا، الموسوعة الحرة

سابقا كان استخراج القوائم الإحصائية أمرا يحتاج خبرة ومعرفة كافية بلغة إس كيو إل أو باقي اللغات الذي تتعلق بقواعد البيانات كما كان يجب أن يتم استخراج القوائم عن طريق التولابز وقبلها عن طريق التول سرفر. رغم أنه لا زال بعض المستخدمين المحترفين يفضلون استخراج القوائم عن طريق التولابز لكن بفضل تطوير أداة Quarry أصبح الأمر متاحا وسهلا للمبتدئين أيضا. رغم أنه لا زالت كتابة الاستعلام تحتاج خبرة كافية لكن بإمكان المستخدمين استخدام الاستعلامات المتاحة هنا أو الطلب من باقي الزملاء الذين لديهم خبرة كافية أن يكتبوا الاستعلام.

استخدام

[عدل]

على المستخدم أن يذهب إلى هذا العنوان ومن ثم يضغط على Login with Wikimedia. بعد ذلك تنفتح أمامه نافذة وتطلب منه تأييد الدخول باستخدام بروتوكول OAuth. يجب هنا على المستخدم أن يختار Allow وهكذا يتم تسجيل الدخول دون الحاجة إلى إدخال كلمة السر. بعد الذهاب إلى New Query تنفتح صفحة ذات مساحة سوداء أمام المستخدم. يجب عليه كتابة كود الاستعلام أو لصق الكود الذي نسخه من مكان آخر في هذه المساحة السوداء ومن ثم Submit Query. لقد انتهى الأمر. كل ما هو على المستخدم أن يصبر ليحصل على القائمة المطلوبة.

ملاحظات

[عدل]

كل نسخة من ويكيبديا أو المشاريع الشقيقة لديها اسم خاص ويجب على المستخدم أن يكتبه في استعلامه ليحصل على القائمة الصحيحة. على سبيل المثال اسم ويكيبديا العربية هو arwiki_p ويجب على المستخدم أن يكتب في بداية الاستعلام USE arwiki_p;. هذه الملاحظة هامة جدا خاصة عندما يتم نسخ الإستعلامات الموجودة هنا يجب على المستخدم أن لا ينسى أن يستبدل الاسم الموجود أعلى الاستعلامات باسم ويكيبديا العربية.

نماذج

[عدل]

هناك الكثير من الإحصاءات موجودة في تصنيف:إحصاءات ويكيبيديا. الكثير من هذه الإحصاءات تحتوي على كود القائمة في صفحات نقاشها. هناك عدد من الإستعلامات يوجد أيضا في الأسفل.


المقالات

[عدل]

المقالات التي توجد كلمة خاصة في عنوانها

[عدل]

قائمة 500 مقالة يحتوى عنوانها على كلمة كتاب

USE arwiki_p;
SELECT page_title
FROM page
WHERE page_namespace = 0
    AND page_is_redirect = 0
    AND page_title LIKE "%_كتاب_%" LIMIT 500;


مقالات بدون وصلات داخلية

[عدل]
USE arwiki_p;
SELECT page_title
FROM page
LEFT JOIN pagelinks ON pl_from = page_id
WHERE page_namespace = 0
    AND page_is_redirect = 0
    AND pl_namespace IS NULL
GROUP BY page_id;

مقالات موجودة في ويكيبديا الإنجليزية لكنها ليست موجودة في العربية

[عدل]

نظرا لعدد الكبير تم تحديد الاستعلام على 500 مقالة فقط. يجب تشغيل هذا الكود على ويكيبديا الإنجليزية وليس العربية.

USE enwiki_p;
SELECT CONCAT (
        ":",
        page_title,
        "]]||",
        count(*),
        "||",
        page_len
        )
FROM langlinks
INNER JOIN page ON ll_from = page_id
WHERE page_namespace = 0
    AND page_is_redirect = 0
    AND NOT EXISTS (
        SELECT *
        FROM langlinks AS t
        WHERE t.ll_lang = "ar"
            AND t.ll_from = langlinks.ll_from
        )
GROUP BY ll_from
ORDER BY count(*) DESC,
    page_title limit 500;

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

[عدل]

يتم استخدام القالب Infobox_film لتحديد مقالات الأفلام ويمكن من خلال تغييره تحديد أي نوع آخر من المقالات.

USE enwiki_p;
SELECT /*SLOW OK*/ page_title
FROM page
WHERE page_id IN (
        SELECT tl_from
        FROM templatelinks
        WHERE tl_title = "Infobox_film"
            AND tl_namespace = 10
            AND tl_from IN (
                SELECT ll_from
                FROM langlinks
                WHERE ll_from
                GROUP BY ll_from
                HAVING COUNT(*) > 20
                )
            AND tl_from NOT IN (
                SELECT ll_from
                FROM langlinks
                WHERE ll_lang = "ar"
                )
        )limit 500;

مقالات غیرمصنفة

[عدل]
USE arwiki_p;
SELECT page_title
FROM page
LEFT JOIN categorylinks ON cl_from = page_id
WHERE page_namespace = 0
    AND page_is_redirect = 0
    AND ISNULL(cl_from);


مقالات لديها أقل من ثلاثة تصانيف

[عدل]
USE arwiki_p;
select page_title from page where page_namespace = 0 and page_is_redirect = 0
and page_id in (select cl_from from categorylinks group by cl_from having count(*) < 3) limit 10;

مقالات تتضمن قالب حماية لكنها ليست محمية بشكل دائم

[عدل]
USE arwiki_p;
 SELECT  page_title
 FROM page
 WHERE page_id IN (
         SELECT tl_from
         FROM templatelinks
         WHERE tl_title = "محمية")
 AND page_id NOT IN (
         SELECT pr_page FROM page_restrictions
         WHERE pr_expiry  LIKE 'infinity')
 AND page_namespace = 0
 ORDER BY page_title ;

تعديلات المستخدمون

[عدل]

تعديلات المستخدم الفلاني حسب التاريخ

[عدل]
USE arwiki_p;
SELECT /*SLOW OK */
    DATE (
        CONCAT (
            YEAR(rev_timestamp),
            "-",
            MONTH(rev_timestamp),
            "-",
            DAY(rev_timestamp)
            )
        ) AS DAY,
    COUNT(rev_timestamp) AS revisions
FROM revision
WHERE rev_user_text = 'Reza1615'
GROUP BY DAY;

سجلات الإداري في فترة محددة

[عدل]
USE arwiki_p;
SELECT
        log_user_text AS المستخدم,
        log_type AS الفعل,
        COUNT(log_timestamp) AS العدد
        FROM logging
        WHERE log_timestamp BETWEEN  20160101000000 AND 20160731235959
        AND log_user_text = "Elph"
        GROUP BY (log_type)
        ORDER BY COUNT(log_timestamp)
        ;

مقالات المستخدم الفلاني حسب التاريخ

[عدل]
USE arwiki_p;
SELECT /*SLOW OK */ page_title,
    DATE (
        CONCAT (
            YEAR(rev_timestamp),
            "-",
            MONTH(rev_timestamp),
            "-",
            DAY(rev_timestamp)
            )
        ) AS DAY
FROM revision
INNER JOIN page ON rev_page = page_id
WHERE page_namespace = 0
    AND rev_user_text = 'Reza1615'
    AND rev_parent_id = 0
    AND page.page_is_redirect = 0
GROUP BY DAY;

ORDER BY rev_timestamp;

تعديلات المستخدم حسب التاريخ والنطاق

[عدل]
USE arwiki_p;
SELECT
        rev_user_text AS المستخدم,
        page_namespace AS النطاق,
        COUNT(rev_timestamp) AS عدد_التعديلات
        FROM revision
        JOIN page ON rev_page = page_id
        WHERE rev_timestamp BETWEEN  20160101000000 AND 20160731235959
        AND rev_user_text = "Elph"
        GROUP BY (page_namespace)
        ORDER BY COUNT(rev_timestamp)
        ;

قائمة المستخدمون حسب التعديلات (دون البوتات)

[عدل]
USE arwiki_p;
SELECT user_name, user_editcount FROM user WHERE user_name NOT IN (SELECT user_name FROM user_groups INNER JOIN user ON user_id = ug_user WHERE ug_group = 'bot') ORDER BY user_editcount DESC LIMIT 500;

وصلات خارجية

[عدل]