2017-02-19 2 views
0

私はTwitter APIから自分のDBにデータを引き出しています。ツイートに使われているハッシュタグのリストを格納するカラム 'hashtags'があります。MySql内の複数のoccurenceサブストリング数をカウントする

ハッシュタグの数を数えたいと思います。例えば

    Hashtags 
Tweet1: ['EUref', 'Brexit', 'poll'] 

Tweet2: ['Brexit', 'Blair'] 

Tweet3: ['Brexit', 'Blair', 'EUref'] 

結果は次のようになります。

hashtag  count(hashtag) 
Brexit  3 
EUref  2 
Blair  2 
poll  1 
私がやって考えていた何

: は「」引用符の間に部分文字列を取るしようとしましたが、それは同じ行に複数回発生します。

strposを使用して ''のインスタンスを検索しようとしましたが、最初のインスタンスのみが返されます。

クエリでこれを行う方法はありますか?私は手続きを試すことを考えていましたが、PHPを使ってこれらの結果をWebページに出力する必要があるため、複雑になります。

+0

'[]'は文字列に含まれていますか? – McNets

+0

はい。それがPythonから書いている方法ですが、問題があまりにも大きければ、それらを取り除くことができます。 –

+1

見てください:http://stackoverflow.com/a/2696901/3270427 – McNets

答えて

0

と仮定すると、すべてのタグが', 'で区切られ、次のことが可能です。

SELECT 
    hashtags, 
    ROUND ( 
     (
      LENGTH(hashtags) 
      - LENGTH(REPLACE (hashtags , "', '", "")) 
     )/4) + 1 
    AS count 
    from brexittweets 

ここSQL Fiddleです。

+0

ありがとうございます。しかし、これは各レコードのハッシュタグの数を返すだけなので、うまくいきません。データベース内の各ハッシュタグの数が必要です。したがって、例えば 'poll'は1のカウントを返さなければなりません。このクエリはカウントしません。 –

1

ツイートの各タグが独自の行に格納されるようにテーブルを正規化した場合は、COUNTGROUP BYで簡単に解決できます。

関連する問題