إليك بعض استعلامات مستكشف البيانات للحصول على تفاصيل حول تحميلات المنشورات. من الممكن إضافة شيء مشابه إلى قسم تقارير المشرفين للمواقع التي لا تحتوي على إضافة مستكشف البيانات. أخبرني إذا كانت هذه البيانات ليست ما تبحث عنه.
أي مستخدمين لديهم أكبر عدد من التحميلات أو أكبر حجم؟
يعيد الاستعلام المستخدم، وعدد التحميلات الخاصة به، وإجمالي حجم التحميلات بالكيلوبايت مقربًا إلى منزلتين عشريتين. يتم الانضمام إلى جدول users لمنع إرجاع بيانات المستخدمين المحذوفين. يتم ترتيب النتائج حسب الحجم الإجمالي للتحميل تنازليًا.
شاملة الصور المحسنة
WITH uploads_with_optimized AS (
SELECT
ul.user_id,
ROUND((SUM(COALESCE(oi.filesize, 0)) + SUM(ul.filesize)) / 1000.0, 2) AS total_kb
FROM post_uploads pul
JOIN uploads ul
ON ul.id = pul.upload_id
LEFT JOIN optimized_images oi
ON ul.id = oi.upload_id
GROUP BY ul.user_id
)
SELECT
uwo.user_id,
COUNT(uploads.user_id) AS upload_count,
total_kb
FROM uploads_with_optimized uwo
JOIN uploads
ON uploads.user_id = uwo.user_id
GROUP BY uploads.user_id, uwo.user_id, total_kb
ORDER BY total_kb DESC
LIMIT 50
مستثنية الصور المحسنة
SELECT
ul.user_id,
COUNT(ul.user_id) AS upload_count,
ROUND(SUM(ul.filesize) / 1000.0, 2) AS total_kb
FROM post_uploads pul
JOIN uploads ul
ON ul.id = pul.upload_id
GROUP BY ul.user_id
ORDER BY total_kb DESC
LIMIT 50
ما هي أكبر 100 تحميل في منتداك؟
يعيد الاستعلام المستخدم، والمنشور الذي يحتوي على التحميل، وحجم ملف التحميل بالكيلوبايت. يتم ترتيب النتائج حسب حجم التحميل تنازليًا.
شاملة الصور المحسنة
SELECT
ul.user_id,
pul.post_id,
ROUND((SUM(oi.filesize) + ul.filesize) / 1000.0, 2) AS total_kb
FROM post_uploads pul
JOIN uploads ul
ON ul.id = pul.upload_id
JOIN optimized_images oi
ON ul.id = oi.upload_id
GROUP BY oi.upload_id, ul.user_id, pul.post_id, ul.filesize
ORDER BY total_kb DESC
LIMIT 100
مستثنية الصور المحسنة
SELECT
ul.user_id,
pul.post_id,
ROUND(ul.filesize / 1000.0, 2) AS total_kb
FROM post_uploads pul
JOIN uploads ul
ON ul.id = pul.upload_id
ORDER BY total_kb DESC
LIMIT 100
التحميلات خلال الـ 30 يومًا الماضية
يتطلب الاستعلام تزويده بمعامل :end_date. يجب أن يكون التاريخ بصيغة ‘yyyy-mm-dd’. على سبيل المثال ‘2020-01-08’. يعيد النتائج لفترة الـ 30 يومًا التي تنتهي بتاريخ end_date. يعيد اليوم، وعدد التحميلات، والإجمالي اليومي للتحميلات بالكيلوبايت لأي أيام في الفترة تحتوي على تحميلات منشورات. يتم ترتيب النتائج حسب اليوم.
شاملة الصور المحسنة
--[params]
-- date :end_date
SELECT
ul.created_at::date AS day,
COUNT(1) AS upload_count,
ROUND((SUM(COALESCE(oi.filesize, 0)) + SUM(ul.filesize)) / 1000.0, 2) AS total_kb
FROM post_uploads pul
JOIN uploads ul
ON ul.id = pul.upload_id
LEFT JOIN optimized_images oi
ON ul.id = oi.upload_id
WHERE ul.created_at::date BETWEEN :end_date::date - INTERVAL '30 days' AND :end_date
GROUP BY ul.created_at::date
ORDER BY ul.created_at::date DESC
مستثنية الصور المحسنة
--[params]
-- date :end_date
SELECT
ul.created_at::date AS day,
COUNT(1) AS upload_count,
ROUND(SUM(ul.filesize) / 1000.0, 2) AS daily_upload_kb
FROM post_uploads pul
JOIN uploads ul
ON ul.id = pul.upload_id
WHERE ul.created_at::date BETWEEN :end_date::date - INTERVAL '30 days' AND :end_date
GROUP BY ul.created_at::date
ORDER BY ul.created_at::date DESC