是否有解决方案如何计算视图中每个属性的NULL和NOT NULL记录数?
例如,有50个视图,每个视图有20个属性,我期待的结果看起来像(例如):
table_name -----Column_name---Nulls_count----Not_null_count------count(*)
T1 -----------------C1-------------------20---------------40-----------------------60
T1------------------C2-------------------11--------------49---------------------60
T1------------------C3-------------------25--------------35---------------------60
T2------------------C1-------------------0--------------100---------------------100
T2------------------C2-------------------40--------------60---------------------100
所有视图都存储在sys.all_views中,列位于sys.all_tab_columns中,并且table_name字段之间存在链接。但是需要使用动态SQL或PL / SQL,因为对于每个属性计数()空行然后计算()非空行以查找相同属性是疯狂的。手动查看:) 有没有人面对这样的任务?我将非常感谢您的所有意见和帮助。
答案 0 :(得分:1)
由于行数是count(*),因此每列可以获得null和非null行:
select
count(*) total_rows ,
count(col1) col1_nonnull,
count(*) - count(col1) col1_null ,
count(col2) col2_nonnull,
count(*) - count(col2) col2_null ,
...
from
my_view
答案 1 :(得分:0)
这是正确的选择:
select t.table_name, T.NUM_ROWS, c.column_name, c.num_nulls, T.NUM_ROWS - c.num_nulls num_not_nulls, c.data_type, c.last_analyzed
from all_tab_cols c
join sys.all_all_tables t on C.TABLE_NAME = t.table_name
where c.table_name like 'MV_%' and c.nullable ='Y'
group by t.table_name, T.NUM_ROWS, c.column_name, c.num_nulls, c.data_type, c.last_analyzed
order by t.table_name, c.column_name;