Как разделить данные имени в одном столбце в PostgreSQL? - PullRequest
0 голосов
/ 01 января 2019

Я новичок в PostgreSQL и использую PGADMIN 4 на Mac.У меня есть один столбец импортированных данных, который имеет несколько имен пользователей, иногда фамилию и в основном имя и фамилию в одном и том же столбце.

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

Поиграл с этим, но нужно больше:

select surname, count(*) from atreedata
    group by surname
    order by count(*) desc limit 40;

Прекрасно работает только с одним именем!Мне нужны наиболее распространенные имена, перечисленные по имени и количеству.

Пример общего столбца:

John Smith
jsmith3
Stacey123
Bob Smith
Jones

1 Ответ

0 голосов
/ 01 января 2019

Итак, если я правильно понимаю, вам просто нужно найти самые многочисленные слова в столбце фамилии.

Есть встроенная функция regexp_split_to_table, которая может разбивать строки на слова и создавать строки из этих слов.Итак:

select surname_word, count(*) as surname_word_count
from (
    select regexp_split_to_table(surname, E'\\s+') as surname_word
    from atreedata
) as surname_words
group by surname_word
order by surname_word_count desc
limit 40;
...