List of all uploaded files

Вот несколько запросов для 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

11 лайков