// Holds the max ts of the records that match aggregation intervals (not the ts of the aggregation window, but the ts of the last record among all the intervals)
@ -36,54 +36,79 @@ public class AggregationRepository {
publicstaticfinalStringFIND_SUM="findSum";
publicstaticfinalStringFIND_SUM="findSum";
publicstaticfinalStringFIND_COUNT="findCount";
publicstaticfinalStringFIND_COUNT="findCount";
publicstaticfinalStringFROM_WHERE_CLAUSE="FROM ts_kv tskv WHERE tskv.entity_id = cast(:entityId AS uuid) AND tskv.key= cast(:entityKey AS int) AND tskv.ts > :startTs AND tskv.ts <= :endTs GROUP BY tskv.entity_id, tskv.key, tsBucket ORDER BY tskv.entity_id, tskv.key, tsBucket";
publicstaticfinalStringFROM_WHERE_CLAUSE="FROM ts_kv tskv WHERE "+
"tskv.entity_id = cast(:entityId AS uuid) "+
publicstaticfinalStringFIND_AVG_QUERY="SELECT time_bucket(:timeBucket, tskv.ts, :startTs) AS tsBucket, :timeBucket AS interval, SUM(COALESCE(tskv.long_v, 0)) AS longValue, SUM(COALESCE(tskv.dbl_v, 0.0)) AS doubleValue, SUM(CASE WHEN tskv.long_v IS NULL THEN 0 ELSE 1 END) AS longCountValue, SUM(CASE WHEN tskv.dbl_v IS NULL THEN 0 ELSE 1 END) AS doubleCountValue, null AS strValue, 'AVG' AS aggType ";
"AND tskv.key= cast(:entityKey AS int) "+
"AND tskv.ts > :startTs AND tskv.ts <= :endTs "+
publicstaticfinalStringFIND_MAX_QUERY="SELECT time_bucket(:timeBucket, tskv.ts, :startTs) AS tsBucket, :timeBucket AS interval, MAX(COALESCE(tskv.long_v, -9223372036854775807)) AS longValue, MAX(COALESCE(tskv.dbl_v, -1.79769E+308)) as doubleValue, SUM(CASE WHEN tskv.long_v IS NULL THEN 0 ELSE 1 END) AS longCountValue, SUM(CASE WHEN tskv.dbl_v IS NULL THEN 0 ELSE 1 END) AS doubleCountValue, MAX(tskv.str_v) AS strValue, 'MAX' AS aggType ";
"GROUP BY tskv.entity_id, tskv.key, tsBucket "+
"ORDER BY tskv.entity_id, tskv.key, tsBucket";
publicstaticfinalStringFIND_MIN_QUERY="SELECT time_bucket(:timeBucket, tskv.ts, :startTs) AS tsBucket, :timeBucket AS interval, MIN(COALESCE(tskv.long_v, 9223372036854775807)) AS longValue, MIN(COALESCE(tskv.dbl_v, 1.79769E+308)) as doubleValue, SUM(CASE WHEN tskv.long_v IS NULL THEN 0 ELSE 1 END) AS longCountValue, SUM(CASE WHEN tskv.dbl_v IS NULL THEN 0 ELSE 1 END) AS doubleCountValue, MIN(tskv.str_v) AS strValue, 'MIN' AS aggType ";
publicstaticfinalStringFIND_AVG_QUERY="SELECT "+
publicstaticfinalStringFIND_SUM_QUERY="SELECT time_bucket(:timeBucket, tskv.ts, :startTs) AS tsBucket, :timeBucket AS interval, SUM(COALESCE(tskv.long_v, 0)) AS longValue, SUM(COALESCE(tskv.dbl_v, 0.0)) AS doubleValue, SUM(CASE WHEN tskv.long_v IS NULL THEN 0 ELSE 1 END) AS longCountValue, SUM(CASE WHEN tskv.dbl_v IS NULL THEN 0 ELSE 1 END) AS doubleCountValue, null AS strValue, null AS jsonValue, 'SUM' AS aggType ";
"time_bucket(:timeBucket, tskv.ts, :startTs) AS tsBucket, :timeBucket AS interval, "+
"SUM(COALESCE(tskv.long_v, 0)) AS longValue, "+
publicstaticfinalStringFIND_COUNT_QUERY="SELECT time_bucket(:timeBucket, tskv.ts, :startTs) AS tsBucket, :timeBucket AS interval, SUM(CASE WHEN tskv.bool_v IS NULL THEN 0 ELSE 1 END) AS booleanValueCount, SUM(CASE WHEN tskv.str_v IS NULL THEN 0 ELSE 1 END) AS strValueCount, SUM(CASE WHEN tskv.long_v IS NULL THEN 0 ELSE 1 END) AS longValueCount, SUM(CASE WHEN tskv.dbl_v IS NULL THEN 0 ELSE 1 END) AS doubleValueCount, SUM(CASE WHEN tskv.json_v IS NULL THEN 0 ELSE 1 END) AS jsonValueCount ";
"SUM(COALESCE(tskv.dbl_v, 0.0)) AS doubleValue, "+
"SUM(CASE WHEN tskv.long_v IS NULL THEN 0 ELSE 1 END) AS longCountValue, "+
"SUM(CASE WHEN tskv.dbl_v IS NULL THEN 0 ELSE 1 END) AS doubleCountValue, "+
"null AS strValue, 'AVG' AS aggType, MAX(tskv.ts) AS maxAggTs ";
publicstaticfinalStringFIND_MAX_QUERY="SELECT "+
"time_bucket(:timeBucket, tskv.ts, :startTs) AS tsBucket, :timeBucket AS interval, "+
"MAX(COALESCE(tskv.long_v, -9223372036854775807)) AS longValue, "+
"MAX(COALESCE(tskv.dbl_v, -1.79769E+308)) as doubleValue, "+
"SUM(CASE WHEN tskv.long_v IS NULL THEN 0 ELSE 1 END) AS longCountValue, "+
"SUM(CASE WHEN tskv.dbl_v IS NULL THEN 0 ELSE 1 END) AS doubleCountValue, "+
"MAX(tskv.str_v) AS strValue, 'MAX' AS aggType, MAX(tskv.ts) AS maxAggTs ";
publicstaticfinalStringFIND_MIN_QUERY="SELECT "+
"time_bucket(:timeBucket, tskv.ts, :startTs) AS tsBucket, :timeBucket AS interval, "+
"MIN(COALESCE(tskv.long_v, 9223372036854775807)) AS longValue, "+
"MIN(COALESCE(tskv.dbl_v, 1.79769E+308)) as doubleValue, "+
"SUM(CASE WHEN tskv.long_v IS NULL THEN 0 ELSE 1 END) AS longCountValue, "+
"SUM(CASE WHEN tskv.dbl_v IS NULL THEN 0 ELSE 1 END) AS doubleCountValue, "+
"MIN(tskv.str_v) AS strValue, 'MIN' AS aggType, MAX(tskv.ts) AS maxAggTs ";
publicstaticfinalStringFIND_SUM_QUERY="SELECT "+
"time_bucket(:timeBucket, tskv.ts, :startTs) AS tsBucket, :timeBucket AS interval, "+
"SUM(COALESCE(tskv.long_v, 0)) AS longValue, SUM(COALESCE(tskv.dbl_v, 0.0)) AS doubleValue, "+
"SUM(CASE WHEN tskv.long_v IS NULL THEN 0 ELSE 1 END) AS longCountValue, "+
"SUM(CASE WHEN tskv.dbl_v IS NULL THEN 0 ELSE 1 END) AS doubleCountValue, "+
"null AS strValue, null AS jsonValue, 'SUM' AS aggType, MAX(tskv.ts) AS maxAggTs ";