データベース全体で少なくとも 10 回使用されたデータ型の名前と、それらが使用されたさまざまなテーブルの数を後者の順に表示したいと考えています。いじりながら、私はこの点に到達しました:
select data_type, count(distinct table_name) "count"
from all_tab_cols
group by data_type
having count(*) >= 10
order by "count" desc;
出力あり
VARCHAR2 1920
NUMBER 1435
...
ビューなどが含まれており、データベースには125個のテーブルしかないため、これは間違っています。しかし、私が試してみると
select data_type, (select count(distinct t.table_name)
from all_tables t
where t.table_name in table_name) "count"
from all_tab_cols
group by data_type
having count(*) >= 10
order by "count" desc;
私は得る
LONG 125
SDO_GEOMETRY 125
... and so on
これも間違っています。明らかに、これはサブクエリ、より具体的なwhere
句によるものです。table_name
現在のグループのテーブル名だけが含まれていると思いましたか? 私の考えに何か問題がありますか?これをどのように解決しますか?
FWIW、これは宿題なので、大まかな指針で十分です。インターネット映画データベースのクローンを使用しています。