Как составить SQL запрос для отображения топ-10 ключевых слов с группировкой и суммированием метрик из другой таблицы?

Как можно выполнить запрос для получения топ-10 ключевых слов вместе с частотами зарплат для построения графика, отображающего распределение частот зарплат в зависимости от ключевых слов?
  • 25 января 2024 г. 15:09
Ответы на вопрос 2
Для того чтобы составить запрос SQL для отображения топ-10 ключевых слов с группировкой и суммированием метрик из другой таблицы, необходимо иметь информацию о структуре базы данных, именах таблиц и полях, которые содержат данные о ключевых словах и метриках. Допустим, у нас есть две таблицы:

1. `keywords` - таблица ключевых слов, в которой есть поля `keyword_id` (уникальный идентификатор ключевого слова) и `keyword` (само ключевое слово).
   
2. `metrics` - таблица метрик, связанная с таблицей ключевых слов, в которой есть поля `keyword_id` (идентификатор ключевого слова), `salary_frequency` (частота зарплаты) и другие поля с метриками.

Предположим, что мы хотим сгруппировать данные по ключевым словам и суммировать частоту зарплат. Тогда запрос может выглядеть так:

```sql
SELECT k.keyword, SUM(m.salary_frequency) AS total_salary_frequency
FROM keywords AS k
JOIN metrics AS m ON k.keyword_id = m.keyword_id
GROUP BY k.keyword
ORDER BY total_salary_frequency DESC
LIMIT 10;
```

Этот запрос соединяет таблицу `keywords` с таблицей `metrics` по полю `keyword_id`, группирует результаты по ключевому слову и суммирует `salary_frequency` для каждого ключевого слова. Затем он сортирует результаты по убыванию суммарной частоты зарплаты и ограничивает вывод десятью самыми популярными ключевыми словами.

Если нужно построить график распределения частот зарплат для топ-10 ключевых слов, то запрос может выглядеть так:
```sql
SELECT k.keyword, m.salary_frequency
FROM keywords AS k
JOIN metrics AS m ON k.keyword_id = m.keyword_id
WHERE k.keyword IN (
    SELECT k.keyword
    FROM keywords AS k
    JOIN metrics AS m ON k.keyword_id = m.keyword_id
    GROUP BY k.keyword
    ORDER BY SUM(m.salary_frequency) DESC
    LIMIT 10
)
ORDER BY k.keyword, m.salary_frequency;
```

В этом запросе в подзапросе выбираются топ-10 ключевых слов по суммарной частоте зарплаты, а во внешнем запросе для этих ключевых слов выбираются все соответствующие записи из таблицы `metrics`.

Имейте в виду, что эти запросы являются примерами и могут требовать настройки в соответствии со структурой и реальными именами таблиц и полей вашей базы данных.
1. 

2.

3.
Похожие вопросы