From c9f5002dc2b659aaf1157e6026a39594093f3a8b Mon Sep 17 00:00:00 2001 From: nymkappa Date: Sat, 11 Dec 2021 19:15:20 +0900 Subject: [PATCH] Use avg() mysql value for timespan between [24h, 6m] --- backend/src/api/statistics.ts | 59 ++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/backend/src/api/statistics.ts b/backend/src/api/statistics.ts index 8ca0eba8f..fcd28d40e 100644 --- a/backend/src/api/statistics.ts +++ b/backend/src/api/statistics.ts @@ -267,6 +267,55 @@ class Statistics { } } + private getQueryForDaysAvg(div: number, interval: string) { + return `SELECT id, UNIX_TIMESTAMP(added) as added, + CAST(avg(unconfirmed_transactions) as FLOAT) as unconfirmed_transactions, + CAST(avg(tx_per_second) as FLOAT) as tx_per_second, + CAST(avg(vbytes_per_second) as FLOAT) as vbytes_per_second, + CAST(avg(vsize_1) as FLOAT) as vsize_1, + CAST(avg(vsize_2) as FLOAT) as vsize_2, + CAST(avg(vsize_3) as FLOAT) as vsize_3, + CAST(avg(vsize_4) as FLOAT) as vsize_4, + CAST(avg(vsize_5) as FLOAT) as vsize_5, + CAST(avg(vsize_6) as FLOAT) as vsize_6, + CAST(avg(vsize_8) as FLOAT) as vsize_8, + CAST(avg(vsize_10) as FLOAT) as vsize_10, + CAST(avg(vsize_12) as FLOAT) as vsize_12, + CAST(avg(vsize_15) as FLOAT) as vsize_15, + CAST(avg(vsize_20) as FLOAT) as vsize_20, + CAST(avg(vsize_30) as FLOAT) as vsize_30, + CAST(avg(vsize_40) as FLOAT) as vsize_40, + CAST(avg(vsize_50) as FLOAT) as vsize_50, + CAST(avg(vsize_60) as FLOAT) as vsize_60, + CAST(avg(vsize_70) as FLOAT) as vsize_70, + CAST(avg(vsize_80) as FLOAT) as vsize_80, + CAST(avg(vsize_90) as FLOAT) as vsize_90, + CAST(avg(vsize_100) as FLOAT) as vsize_100, + CAST(avg(vsize_125) as FLOAT) as vsize_125, + CAST(avg(vsize_150) as FLOAT) as vsize_150, + CAST(avg(vsize_175) as FLOAT) as vsize_175, + CAST(avg(vsize_200) as FLOAT) as vsize_200, + CAST(avg(vsize_250) as FLOAT) as vsize_250, + CAST(avg(vsize_300) as FLOAT) as vsize_300, + CAST(avg(vsize_350) as FLOAT) as vsize_350, + CAST(avg(vsize_400) as FLOAT) as vsize_400, + CAST(avg(vsize_500) as FLOAT) as vsize_500, + CAST(avg(vsize_600) as FLOAT) as vsize_600, + CAST(avg(vsize_700) as FLOAT) as vsize_700, + CAST(avg(vsize_800) as FLOAT) as vsize_800, + CAST(avg(vsize_900) as FLOAT) as vsize_900, + CAST(avg(vsize_1000) as FLOAT) as vsize_1000, + CAST(avg(vsize_1200) as FLOAT) as vsize_1200, + CAST(avg(vsize_1400) as FLOAT) as vsize_1400, + CAST(avg(vsize_1600) as FLOAT) as vsize_1600, + CAST(avg(vsize_1800) as FLOAT) as vsize_1800, + CAST(avg(vsize_2000) as FLOAT) as vsize_2000 \ + FROM statistics \ + WHERE added BETWEEN DATE_SUB(NOW(), INTERVAL ${interval}) AND NOW() \ + GROUP BY UNIX_TIMESTAMP(added) DIV ${div} \ + ORDER BY id DESC;`; + } + private getQueryForDays(div: number, interval: string) { return `SELECT id, UNIX_TIMESTAMP(added) as added, unconfirmed_transactions, tx_per_second, @@ -345,7 +394,7 @@ class Statistics { public async $list24H(): Promise { try { const connection = await DB.pool.getConnection(); - const query = this.getQueryForDays(120, '1 DAY'); // 2m interval + const query = this.getQueryForDaysAvg(120, '1 DAY'); // 2m interval const [rows] = await connection.query({ sql: query, timeout: this.queryTimeout }); connection.release(); return this.mapStatisticToOptimizedStatistic(rows); @@ -358,7 +407,7 @@ class Statistics { public async $list1W(): Promise { try { const connection = await DB.pool.getConnection(); - const query = this.getQueryForDays(1200, '1 WEEK'); // 20m interval + const query = this.getQueryForDaysAvg(1200, '1 WEEK'); // 20m interval const [rows] = await connection.query({ sql: query, timeout: this.queryTimeout }); connection.release(); return this.mapStatisticToOptimizedStatistic(rows); @@ -371,7 +420,7 @@ class Statistics { public async $list1M(): Promise { try { const connection = await DB.pool.getConnection(); - const query = this.getQueryForDays(3600, '1 MONTH'); // 1h interval + const query = this.getQueryForDaysAvg(3600, '1 MONTH'); // 1h interval const [rows] = await connection.query({ sql: query, timeout: this.queryTimeout }); connection.release(); return this.mapStatisticToOptimizedStatistic(rows); @@ -384,7 +433,7 @@ class Statistics { public async $list3M(): Promise { try { const connection = await DB.pool.getConnection(); - const query = this.getQueryForDays(14400, '3 MONTH'); // 4h interval + const query = this.getQueryForDaysAvg(14400, '3 MONTH'); // 4h interval const [rows] = await connection.query({ sql: query, timeout: this.queryTimeout }); connection.release(); return this.mapStatisticToOptimizedStatistic(rows); @@ -397,7 +446,7 @@ class Statistics { public async $list6M(): Promise { try { const connection = await DB.pool.getConnection(); - const query = this.getQueryForDays(28800, '6 MONTH'); // 8h interval + const query = this.getQueryForDaysAvg(28800, '6 MONTH'); // 8h interval const [rows] = await connection.query({ sql: query, timeout: this.queryTimeout }); connection.release(); return this.mapStatisticToOptimizedStatistic(rows);