Tuesday, May 08, 2007

Statistics - Unique Values

select collectDate
,collectTime
,databasename
,tablename
,columnname
,(-1**(NumValuesw1 / 32768))
* (2**((NumValuesw1 / 16 mod 2048) - 1023))
* (1 + ((NumValuesw1 mod 16) * 2**-4)
+ (NumValuesw2 * 2**-20)
+ (NumValuesw3 * 2**-36)
+ (NumValuesw4 * 2**-52)) (decimal(18,0)) AS NumValues
from (select collectDate
,collectTime
,databasename
,tablename
,columnname
,HASHBUCKET(SUBSTR(Stats, 48 + offset + 8, 1)
|| SUBSTR(Stats, 48 + offset + 7, 1) (BYTE(4))) AS NumValuesw1
,HASHBUCKET(SUBSTR(Stats, 48 + offset + 6, 1)
|| SUBSTR(Stats, 48 + offset + 5, 1) (BYTE(4))) AS NumValuesw2
,HASHBUCKET(SUBSTR(Stats, 48 + offset + 4, 1)
|| SUBSTR(Stats, 48 + offset + 3, 1) (BYTE(4))) AS NumValuesw3
,HASHBUCKET(SUBSTR(Stats, 48 + offset + 2, 1)
|| SUBSTR(Stats, 48 + offset + 1, 1) (BYTE(4))) AS NumValuesw4
from (SELECT ( (HASHBUCKET(SUBSTR(Stats, 2, 1) || SUBSTR(Stats, 1, 1) (BYTE(4)) ) - 1900 ) * 10000
+
(HASHBUCKET('00'xb || SUBSTR(Stats, 3, 1) (BYTE(4)) ) ) * 100
+
(HASHBUCKET('00'xb || SUBSTR(Stats, 4, 1) (BYTE(4)) ) )
) (DATE) AS CollectDate
,(CAST ( (HASHBUCKET (CAST('00'xb || SUBSTR(Stats, 5, 1) AS BYTE(4)) ) (FORMAT '99:') )
||
(HASHBUCKET (CAST('00'xb || SUBSTR(Stats, 6, 1) AS BYTE(4)) ) (FORMAT '99:') )
||
(HASHBUCKET (CAST('00'xb || SUBSTR(Stats, 7, 1) AS BYTE(4)) ) (FORMAT '99.') )
||
(HASHBUCKET (CAST('00'xb || SUBSTR(Stats, 8, 1) AS BYTE(4)) ) (FORMAT '99' ) ) AS TIME(2))
) AS CollectTime
,databasename
,TableName
,ColumnName
,CASE WHEN SUBSTR(fieldStatistics, 23, 1) = '00'XB
THEN 16
ELSE 0
END AS Offset
,SUBSTR(fieldstatistics, 1, 80) AS Stats
from dbc.columnstats
where databasename =''
and tablename = '''
and fieldstatistics is not null
) D1
) D2

;

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home