MySQL: группировка по нескольким столбцам, не дающая точных результатов

0

У меня есть таблица, которая содержит 5 столбцов, а именно:

before_1, before_2, before_3, правило, имя

где before_1, before_2 и before_3 - это три слова перед именем/словом в документе.

Я хотел найти:

Какие два слова встречаются перед именем. Мне не нужны только верхние слова, но все слова отсортированы по количеству вхождений.

Я пробовал следующие несколько запросов, но это не сработало для меня.

select count(before_2),count(before_3),name from data_with_before_words group by name;

У меня одинаковый счет для обеих столбцов, чего я не ожидал.

Пример данных:

Первые 5 строк:

before_1,before_2,before_2,rule,name

a,league,of,Persona,Amell
the,assasin,of,Persona,Amell
the,league,of,Persona,Amell
a,assasin,of,Persona,Amell
a,league,of,Persona,Amell

Ожидаемый результат:

league,of,3,Amell
assasin,of,2,Amell

Любая помощь будет оценена по достоинству.

Теги:
database
group-by

3 ответа

1
Лучший ответ

Чтобы получить ожидаемый результат, вы можете использовать следующий запрос

select before_2,before_3,name,count(*)
from data_with_before_words 
group by before_2,before_3,name
order by count(*) desc

демонстрация

1

Попробуйте этот запрос:

select count(res1.comWords) as occurrences, res1.name from (select concat(before_1,"-", before_2) as comWords, name from data_with_before_words) res1 group by res1.name order by occurrences desc;
0

Попробуйте это

SELECT before_2,before_3,name FROM data_with_before_words GROUP BY before_2,before_3,name Having count(*)>=1

Ещё вопросы

Сообщество Overcoder
Наверх
Меню