mirror of
https://github.com/nocodb/nocodb.git
synced 2026-05-05 13:56:51 +00:00
feature addition: aggregate functions
This commit is contained in:
44
lib/xapi.js
44
lib/xapi.js
@@ -168,6 +168,12 @@ class Xapi {
|
||||
.get(this.asyncMiddleware(this.groupBy.bind(this)));
|
||||
break;
|
||||
|
||||
case 'aggregate':
|
||||
this.app.route(routes[i]['routeUrl'])
|
||||
.get(this.asyncMiddleware(this.aggregate.bind(this)));
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -189,8 +195,6 @@ class Xapi {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
async create(req, res) {
|
||||
@@ -431,6 +435,41 @@ class Xapi {
|
||||
|
||||
}
|
||||
|
||||
async aggregate(req, res) {
|
||||
|
||||
let tableName = req.app.locals._tableName;
|
||||
let query = 'select '
|
||||
let params = []
|
||||
let fields = req.query._fields.split(',');
|
||||
|
||||
for (var i = 0; i < fields.length; ++i) {
|
||||
if (i) {
|
||||
query = query + ','
|
||||
}
|
||||
query = query + ' min(??) as ?,max(??) as ?,avg(??) as ?,sum(??) as ?,stddev(??) as ?,variance(??) as ? '
|
||||
params.push(fields[i]);
|
||||
params.push('min_of_' + fields[i]);
|
||||
params.push(fields[i]);
|
||||
params.push('max_of_' + fields[i]);
|
||||
params.push(fields[i]);
|
||||
params.push('avg_of_' + fields[i]);
|
||||
params.push(fields[i]);
|
||||
params.push('sum_of_' + fields[i]);
|
||||
params.push(fields[i]);
|
||||
params.push('stddev_of_' + fields[i]);
|
||||
params.push(fields[i]);
|
||||
params.push('variance_of_' + fields[i]);
|
||||
}
|
||||
|
||||
query = query + ' from ??'
|
||||
params.push(tableName)
|
||||
|
||||
var results = await this.mysql.exec(query, params);
|
||||
|
||||
res.status(200).json(results);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**************** START : files related ****************/
|
||||
downloadFile(req, res) {
|
||||
@@ -463,6 +502,7 @@ class Xapi {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**************** END : files related ****************/
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user