The PercentGood Aggregate defined in Table 44 performs the following calculation:
PercentGood = DurationGood / ProcessingInterval x 100
where:
DurationGood is the result from the DurationGood Aggregate, calculated using the ProcessingInterval supplied to PercentGood call.
ProcessingInterval is the duration of interval.
If the last interval is a partial interval then the duration of the partial interval is used in the calculation. Each Aggregate is returned with timestamp of the start of the interval. StatusCodes are Good, Calculated.
Table 44 – PercentGood Aggregate summary
PercentGood Aggregate Characteristics 

Type 
Calculated 

Data Type 
Double (percent) 

Use Bounds 
Simple (used in DurationGood calculation) 

Timestamp 
StartTime 



StatusCode Calculations 

Calculation Method 
Custom Always Good 

Partial 
Set Sometimes If an interval is not a complete interval 

Calculated 
Set Always 

Interpolated 
Not Set 

Raw 
Not Set 

Multi Value 
Not Set 



StatusCode Common Special Cases 

Before Start of Data 
Bad_NoData 

After End of Data 
Bad_NoData 

No Start Bound 
No special handing required 

No End Bound 
No special handing required 

Bound Bad 
No special handing required 

Bound Uncertain 
No special handing required 