0

私はこのようなデータセットを持っています

id | sentence                       | tags
1  | "people walk dogs in the park" | "pet park health"
2  | "I am allergic to dogs"        | "allergies health"

SQLクエリを使用して、各タグ単語と各文単語の間の共起数を見つけることは可能ですか? 各タグとセンテンス エントリを解析する必要があるため、難しいでしょう。

次のように見えるかもしれません

select sentence_word,tag_word,count(id)
from
(select id,sentence_word
from table)A

join

(select id, tag_word
from table)B

on A.id=B.id
group by sentence_word,tag_word

ただし、2 つのサブクエリが正しくないことはわかっています

ここにいくつかのサンプル結果があります

 tag_word   | sentence_word  | count(id)
"walk"      |"pet"           |1
"health"    |"dogs"          |2
"allergies" |"dogs"          |1
4

1 に答える 1

1

次の行動計画を提案できます。

  1. 2 つの列をそれぞれ別の一時データベースに移動します。

  2. 文字列フィールドを列に変換するためにstored procedure(のように) を呼び出しますMySQL

  3. CROSS JOIN2 つの一時テーブル

  4. COUNT DISTINCT結果のデータセットで実行する

上記の手順は、独自のストアド プロシージャに組み合わせることができます。

の分割に関する記事はこちらですSQL Server

一部の SQL 実装では、分割を として実装できますuser defined functions

于 2013-09-20T20:40:05.050 に答える