題名のとおりなのですが、
以下のようなSQLの練習の一環として以下のようなSQLを作成しました。
(SQL初心者なのでかなりへたくそなSQLですがご了承下さい)
SELECT Z.OWNER, A.INDEX_CNT, B.TABLE_CNT, C.VIEW_CNT FROM
(SELECT OWNER FROM DBA_OBJECTS GROUP BY OWNER) Z
,(SELECT OWNER, OBJECT_TYPE, COUNT() "INDEX_CNT" FROM dba_objects
WHERE OBJECT_TYPE = 'INDEX'
GROUP BY OWNER, OBJECT_TYPE) A
,(SELECT OWNER, OBJECT_TYPE, COUNT() "TABLE_CNT" FROM dba_objects
WHERE OBJECT_TYPE = 'TABLE'
GROUP BY OWNER, OBJECT_TYPE) B
,(SELECT OWNER, OBJECT_TYPE, COUNT(*) "VIEW_CNT" FROM dba_objects
WHERE OBJECT_TYPE = 'VIEW'
GROUP BY OWNER, OBJECT_TYPE) C
WHERE Z.OWNER = A.OWNER(+)
AND Z.OWNER = B.OWNER(+)
AND Z.OWNER = C.OWNER(+)
このSQLで各OWNERのOBJECT_TYPEが、TABLE、VIEW、INDEXの総数が出力されます。
私が実現したいのは、「各OWNERの各OBJECT_TYPE毎の総数一覧」を出力したいです。
上記のSQLで結合を繰り返せば可能ですが、もう少しスマートに実現できないでしょうか。
よろしくお願い致します。
すいません。
説明が足りませんでした。
以下のようにOBJECT_TYPEをカラムとしたいです。
(一番上部がヘッダーです)
OWENER table index view ・・・・・・・・・・
OWNER1 20 2 3 ・・・・・・・・・・
OWNER2 10 2 3 ・・・・・・・・・・
OWNER3 20 6 3 ・・・・・・・・・・
OWNER4 20 2 3 ・・・・・・・・・・
OWNER5 40 4 3 ・・・・・・・・・・
OWNER6 50 2 3 ・・・・・・・・・・
OWNER7 70 5 3 ・・・・・・・・・・
OWNER8 10 2 3 ・・・・・・・・・・
回答2件
あなたの回答
tips
プレビュー