У меня проблемы с пониманием того, как составить запрос, который покажет мне «три самых популярных статьи» с точки зрения просмотров («Статус: 200 ОК»).
Есть 2 таблицы, с которыми я сейчас работаю.
- Таблица журналов
- Таблица статей
Столбцы вэти таблицы: Таблица "public.log"
Column | Type | Modifiers
--------+--------------------------+--------------------------------------------------
path | text |
ip | inet |
method | text |
status | text |
time | timestamp with time zone | default now()
id | integer | not null default nextval('log_id_seq'::regclass)
Индексы:
и
Table "public.articles"
Column | Type | Modifiers
--------+--------------------------+-------------------------------------------------------
author | integer | not null
title | text | not null
slug | text | not null
lead | text |
body | text |
time | timestamp with time zone | default now()
id | integer | not null default nextval('articles_id_seq'::regclass)
Индексы:
.
Пока что я написал этот запрос, основываясь на своем уровне и текущем понимании SQL ...
SELECT articles.title, log.status
FROM articles join log
WHERE articles.title = log.path
HAVING status = “200 OK”
GROUP BY title, status
Очевидно, что это неверно.Я хочу быть в состоянии извлечь три самые популярные статьи из базы данных, и я знаю, что «сопоставление» 200 OK с «заголовком статьи» покажет или подсчитает для меня один «просмотр» или попадание.Мой мыслительный процесс выглядит так: мне нужно определить, сколько раз этот article.title = log.path (1 уникальный) отображается в базе данных журналов (со статусом 200 OK), создав запрос.Мое задание - на самом деле написать программу, которая будет печатать результаты с «[мой код получает] базу данных», чтобы выполнить тяжелую работу с помощью объединений, агрегатов и предложения where… выполняя минимальную «постобработку» в коде Pythonсама. "
Любое объяснение, идея, подсказка ценится всеми StackOverflow ...