1

私は Oracle BI (v. 11.1.1.7.141014) のユーザーです。テキスト列「説明」があり、その列のすべての単語の単語数を含む新しいテーブルを作成したいと考えています。たとえば、次のようになります。

ソース:

Description
___________
This is a test
Just a test

結果:

Word    Count
_____________
a       2
test    2
is      1
just    1
this    1

それは可能でしょうか?私はユーザー アカウントを持っていますが (管理機能はありません)、レポート (テーブル、ピボット テーブルなど)、データ構造、カスタム SQL クエリ (レポートとデータ構造に限られます) などで作業できます...

前もって感謝します

4

1 に答える 1

1

「単語」を 1 つ以上の連続した英字 (大文字または小文字) の任意のシーケンスとして定義し、「これ」と「これ」が同じであると仮定すると、1 つの可能な解決策がここにあります。コードの最初の行は「... from a)」で終わります。「a」の代わりにテーブル名を置き換えます (私自身のテスト目的で、入力データを使用してテーブルを作成し、それを a と呼びました)。

with b (d, ct) as (select Description, regexp_count(Description, '[a-zA-Z]+') from a),
     h (pos)       as (select level from dual connect by level <= 100),
     prep (word)   as (select lower(regexp_substr(d, '[a-zA-Z]+', 1, pos)) from b, h where pos <= ct)
select   word, count(word) as word_count 
from     prep 
group by word
order by word_count desc, word
/

ソリューションでは、入力文字列あたりの最大単語数を事前に知っておく必要があります。私は 100 を使用しましたが、これは増やすことができます (コードの 2 行目の h の定義で)。

于 2016-03-31T17:25:19.493 に答える