Вот несколько запросов для Data Explorer для получения сведений о загрузке постов. Возможно, что-то подобное можно добавить в раздел отчетов администратора для сайтов, где не установлен плагин Data Explorer. Дайте знать, если эти данные не соответствуют вашим ожиданиям.
Какие пользователи имеют наибольшее количество/объем загрузок?
Возвращает пользователя, количество его загрузок и общий объем загрузок в КБ, округленный до двух знаков после запятой. Соединение с таблицей 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