SQL 테이블 열에서 유사한 구문을 그룹화하는 방법은 무엇입니까?

어니스트 파이 졸린

테이블에는 수천 개의 인기 음악 밴드가 있으며 이러한 이름은 다른 방식으로 쓸 수 있습니다. 예를 들면 :

  • "헝가리의 레드 핫 칠리 페퍼스"
  • "콘서트 레드 핫 칠리 페퍼스"
  • "레드 핫 칠리 페퍼스"
  • "Red Hot (캘리포니아에 거주)"

각 행에는 group_id 필드가 있습니다. 그리고이 필드는 모든 유사한 아티스트에 대해 동일해야합니다. 예를 들어, 그룹에서 가장 작은 ID :

id   | name                                 |  group_id
-------------------------------------------------------
1137 | "Red Hot Chili Peppers in Hungary"   | 1137
1138 | "Concert Red Hot Chili Peppers"      | 1137
1139 | "Red Hot Chili Peppers"              | 1137
1140 | "Red Hot (Live in CA)"               | 1137

이제 모든 행 group_id 가 비어 있습니다. 비슷한 이름을 올바르게 결합하고 group_id를 할당하는 방법은 무엇입니까?

Markgiaconia

재미를 위해 여기에 gordon이 언급 한 levenstein에 대한 샘플 Postgres 코드 (어떤 RDBMS를 사용하고 있습니까?)가 있지만 문제는 그렇게 간단하지 않습니다.

create extension fuzzystrmatch 

create table t (id serial, txt text)
insert into t(txt) values('Red Hot Chili Peppers in Hungary');
insert into t(txt) values('Concert Red Hot Chili Peppers');
insert into t(txt) values('Red Hot Chili Peppers');
insert into t(txt) values('Red Hot (Live in CA)');

select a.txt a, b.txt b,  levenshtein(a.txt, b.txt)  from t as a inner join t as b on a.id < b.id 

반환하는

"Red Hot Chili Peppers in Hungary";"Concert Red Hot Chili Peppers";19
"Red Hot Chili Peppers in Hungary";"Red Hot Chili Peppers";11
"Red Hot Chili Peppers in Hungary";"Red Hot (Live in CA)";18
"Concert Red Hot Chili Peppers";"Red Hot Chili Peppers";8
"Concert Red Hot Chili Peppers";"Red Hot (Live in CA)";19
"Red Hot Chili Peppers";"Red Hot (Live in CA)";11

그러나 이제이 거리 (마지막 열의 숫자)로 무언가를해야합니다. 숫자가 클수록 거리가 멀수록 거리가 멀수록 덜 유사합니다. 따라서 각 문자열을 점수에 바인딩하는 조회 테이블을 쉽게 만들 수 있지만 항목이 여러 그룹에 속하게되어 실제로 그룹화되지 않습니다.

보유한 데이터의 양에 따라 데이터를 꺼내고, KMeans와 같은 것으로 클러스터링 한 다음 다시 넣거나, 알려진 그룹 목록을 유지 한 다음 like 연산자를 조인에 추가 할 수 있지만 여전히 종료 할 수 있습니다. 그룹에 따라 여러 그룹의 일부 행이 있습니다.

어쨌든, 재미 있고, 이것이 도움이되기를 바랍니다. 흥미로운 문제.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQL WITH 문에서 테이블을 사용하는 방법은 무엇입니까?

분류에서Dev

함수 별 그룹화 및 길이 필터를 사용하여 SQL에서 테이블을 업데이트하는 방법은 무엇입니까?

분류에서Dev

SQL을 사용하여 테이블에서 배열로 값을 삽입하는 방법은 무엇입니까?

분류에서Dev

정렬 된 목록에서 시작이 유사한 문자열을 그룹화하는 방법은 무엇입니까?

분류에서Dev

사용자 ID로 테이블을 그룹화하고 다른 열에 대한 최대 값을 얻는 방법은 무엇입니까?

분류에서Dev

SQL의 테이블에 각 레코드에 대한 증분 고유 문자-문자를 유지하는 열을 추가하는 방법은 무엇입니까?

분류에서Dev

SQl 서버에서 두 테이블로 그룹화하는 방법은 무엇입니까?

분류에서Dev

Scala에서 유사한 열 값을 그룹화하는 방법은 무엇입니까?

분류에서Dev

Scala에서 유사한 열 값을 그룹화하는 방법은 무엇입니까?

분류에서Dev

SQL의 많은 테이블에서 문자열을 검색하는 방법은 무엇입니까?

분류에서Dev

두 번째 테이블에서 공유 값이 일치하는 한 테이블에서 SQL 값을 얻는 방법은 무엇입니까?

분류에서Dev

SQL Server :이 XML을 테이블 열로 구문 분석하는 방법은 무엇입니까?

분류에서Dev

동일한 테이블 및 열에서 다른 데이터 그룹에 데이터 그룹을 추가하는 방법은 무엇입니까?

분류에서Dev

t-sql의 조건에 따라 한 열의 값을 그룹화하는 방법은 무엇입니까?

분류에서Dev

SQL Server에서 테이블을 만들 때 INTEGER의 길이를 제한하는 방법은 무엇입니까?

분류에서Dev

테이블 행에서 SQL 동적 쿼리 문자열을 실행하는 방법은 무엇입니까?

분류에서Dev

동적 SQL에서 테이블 변수 이름을 사용하는 방법은 무엇입니까?

분류에서Dev

서로 다른 열로 두 테이블을 그룹화하는 방법은 무엇입니까?

분류에서Dev

슬롯을 사용하여 Vuetify 데이터 테이블에서 그룹화 된 행의 스타일을 지정하는 방법은 무엇입니까?

분류에서Dev

다른 열을 유지하면서 한 열에 최소값이있는 행을 다른 열로 그룹화하는 방법은 무엇입니까?

분류에서Dev

알 수없는 열 이름으로 데이터 테이블을 그룹화하고 한 필드의 합계를 계산하는 방법은 무엇입니까?

분류에서Dev

C #에서 SQL Server 테이블에 대한 제약 조건을 수정하는 방법은 무엇입니까?

분류에서Dev

SQL에서 jon을 사용하여 두 테이블을 조인하는 방법은 무엇입니까?

분류에서Dev

SQL에서 다른 테이블을 사용하여 각 행을 계산하는 방법은 무엇입니까?

분류에서Dev

Oracle SQL의 Select 문에서 테이블 열의 이름을 바꾸는 방법은 무엇입니까?

분류에서Dev

한 SQL 테이블에서 데이터를 복사하고 다른 두 번째 테이블에 새 항목을 만드는 방법은 무엇입니까?

분류에서Dev

SQL에서 동일한 값으로 행을 그룹화하는 방법은 무엇입니까?

분류에서Dev

LINQ to SQL Entity Framework에서 참조 된 테이블을 제한하는 방법은 무엇입니까?

분류에서Dev

내부 조인을 사용하여 SQL의 열을 그룹화하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    SQL WITH 문에서 테이블을 사용하는 방법은 무엇입니까?

  2. 2

    함수 별 그룹화 및 길이 필터를 사용하여 SQL에서 테이블을 업데이트하는 방법은 무엇입니까?

  3. 3

    SQL을 사용하여 테이블에서 배열로 값을 삽입하는 방법은 무엇입니까?

  4. 4

    정렬 된 목록에서 시작이 유사한 문자열을 그룹화하는 방법은 무엇입니까?

  5. 5

    사용자 ID로 테이블을 그룹화하고 다른 열에 대한 최대 값을 얻는 방법은 무엇입니까?

  6. 6

    SQL의 테이블에 각 레코드에 대한 증분 고유 문자-문자를 유지하는 열을 추가하는 방법은 무엇입니까?

  7. 7

    SQl 서버에서 두 테이블로 그룹화하는 방법은 무엇입니까?

  8. 8

    Scala에서 유사한 열 값을 그룹화하는 방법은 무엇입니까?

  9. 9

    Scala에서 유사한 열 값을 그룹화하는 방법은 무엇입니까?

  10. 10

    SQL의 많은 테이블에서 문자열을 검색하는 방법은 무엇입니까?

  11. 11

    두 번째 테이블에서 공유 값이 일치하는 한 테이블에서 SQL 값을 얻는 방법은 무엇입니까?

  12. 12

    SQL Server :이 XML을 테이블 열로 구문 분석하는 방법은 무엇입니까?

  13. 13

    동일한 테이블 및 열에서 다른 데이터 그룹에 데이터 그룹을 추가하는 방법은 무엇입니까?

  14. 14

    t-sql의 조건에 따라 한 열의 값을 그룹화하는 방법은 무엇입니까?

  15. 15

    SQL Server에서 테이블을 만들 때 INTEGER의 길이를 제한하는 방법은 무엇입니까?

  16. 16

    테이블 행에서 SQL 동적 쿼리 문자열을 실행하는 방법은 무엇입니까?

  17. 17

    동적 SQL에서 테이블 변수 이름을 사용하는 방법은 무엇입니까?

  18. 18

    서로 다른 열로 두 테이블을 그룹화하는 방법은 무엇입니까?

  19. 19

    슬롯을 사용하여 Vuetify 데이터 테이블에서 그룹화 된 행의 스타일을 지정하는 방법은 무엇입니까?

  20. 20

    다른 열을 유지하면서 한 열에 최소값이있는 행을 다른 열로 그룹화하는 방법은 무엇입니까?

  21. 21

    알 수없는 열 이름으로 데이터 테이블을 그룹화하고 한 필드의 합계를 계산하는 방법은 무엇입니까?

  22. 22

    C #에서 SQL Server 테이블에 대한 제약 조건을 수정하는 방법은 무엇입니까?

  23. 23

    SQL에서 jon을 사용하여 두 테이블을 조인하는 방법은 무엇입니까?

  24. 24

    SQL에서 다른 테이블을 사용하여 각 행을 계산하는 방법은 무엇입니까?

  25. 25

    Oracle SQL의 Select 문에서 테이블 열의 이름을 바꾸는 방법은 무엇입니까?

  26. 26

    한 SQL 테이블에서 데이터를 복사하고 다른 두 번째 테이블에 새 항목을 만드는 방법은 무엇입니까?

  27. 27

    SQL에서 동일한 값으로 행을 그룹화하는 방법은 무엇입니까?

  28. 28

    LINQ to SQL Entity Framework에서 참조 된 테이블을 제한하는 방법은 무엇입니까?

  29. 29

    내부 조인을 사용하여 SQL의 열을 그룹화하는 방법은 무엇입니까?

뜨겁다태그

보관