/*  Statistics details for table partitions
    
    Usage: @tpstat <owner> <table> <partition>

    vplesnila 2024-01-29: creation
*/

col owner for a20 head "Owner"
col table_name for a30 head "Table name"
col PARTITION_NAME for a20 head "Partition name"
col last_DML for a20 head "Last DML"
col last_analyzed for a20 head "Last Analyzed"
col STALE_STATS for a7 head "Stale"
col NUM_ROWS head "#Rows" 
col PARTITION_POSITION head "P#" for 999 
col INSERTS head "Table|INS" 
col UPDATES head "Table|UPD"
col DELETES head "Table|DEL"
col TRUNCATED head "Table|TRUN"

break on report skip 1
compute sum of INSERTS on report
compute sum of UPDATES on report
compute sum of DELETES on report

select 
     tabstat.OWNER
    ,tabstat.TABLE_NAME
	,tabstat.PARTITION_POSITION
    ,tabstat.PARTITION_NAME
    ,tabstat.NUM_ROWS
    ,tabstat.STALE_STATS
    ,tabstat.LAST_ANALYZED
    ,tabmod.INSERTS
    ,tabmod.UPDATES
    ,tabmod.DELETES
    ,tabmod.TRUNCATED
    ,tabmod.TIMESTAMP last_DML
from 
     dba_tab_statistics tabstat
    ,dba_tab_modifications tabmod
WHERE
    tabstat.owner = '&&1'
    AND tabstat.table_name = '&&2'
	AND (tabstat.partition_name like '%&&3%' or tabstat.partition_name is NULL)
    AND tabstat.owner = tabmod.table_owner(+)
    AND tabstat.table_name = tabmod.table_name(+)
    AND tabstat.partition_name = tabmod.partition_name(+)
ORDER BY
    tabstat.owner asc,
    tabstat.table_name asc,
    tabstat.partition_position asc,
    tabstat.subpartition_position asc
/

