Voici quelques requêtes Data Explorer pour obtenir des détails sur les téléversements de publications. Il serait peut-être possible d’ajouter quelque chose de similaire dans la section des rapports administratifs pour les sites qui n’ont pas le plugin Data Explorer installé. Faites-moi savoir si ces données ne correspondent pas à ce que vous recherchez.
Quels utilisateurs ont le plus grand nombre de téléversements ou les plus volumineux ?
Renvoie l’utilisateur, son nombre de téléversements et la taille totale de ses téléversements en ko arrondie à deux décimales. La jointure sur la table users permet d’éviter que des données d’utilisateurs supprimés soient renvoyées. Les résultats sont triés par taille totale de téléversement dans l’ordre décroissant.
Incluant les images optimisées
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
Excluant les images optimisées
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
Quels sont les 100 plus grands téléversements sur mon forum ?
Renvoie l’utilisateur, la publication contenant le téléversement et la taille du fichier du téléversement en ko. Les résultats sont triés par taille de téléversement dans l’ordre décroissant.
Incluant les images optimisées
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
Excluant les images optimisées
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
Téléversements des 30 derniers jours
La requête nécessite que vous fournissiez un paramètre :end_date. La date doit être au format ‘aaaa-mm-jjjj’. Par exemple ‘2020-01-08’. Elle renvoie les résultats pour la période de 30 jours qui se termine par end_date. Elle renvoie le jour, le nombre de téléversements et la taille totale des téléversements du jour en ko pour tous les jours de la période ayant des téléversements de publications. Les résultats sont triés par jour.
Incluant les images optimisées
--[params]
-- date :end_date
SELECT
ul.created_at::date AS jour,
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 jours' AND :end_date
GROUP BY ul.created_at::date
ORDER BY ul.created_at::date DESC
Excluant les images optimisées
--[params]
-- date :end_date
SELECT
ul.created_at::date AS jour,
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 jours' AND :end_date
GROUP BY ul.created_at::date
ORDER BY ul.created_at::date DESC