SQL: как посчитать, сколько строк содержат несколько ключевых слов

У меня есть набор данных, который выглядит так:

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

1 ответ

Предположим, что у вас есть таблица ключевых слов. Затем вы можете сделать:

select kw.word, count(d.city)
from keywords kw left join
     dataset d
     on d.description like concat('%', kw.word, '%')
group by kw.word;

Единственная проблема с этим - частичные совпадения. Таким образом, "деревья" будут соответствовать ключевому слову "дерево" (а также "re", "e" и т. Д.). Если вы знаете, что у вас нет знаков препинания и можете считать, что слова разделены пробелами, вы можете использовать:

select kw.word, count(d.city)
from keywords kw left join
     dataset d
     on concat(' ', d.description, ' ') like concat('% ', kw.word, ' %')
group by kw.word;
Другие вопросы по тегам