@@ -1439,7 +1439,25 @@ SQLConnector.prototype.buildSelect = function(model, filter, options) {
14391439 }
14401440 }
14411441
1442+ let extraSelect = '' ;
1443+ if ( filter . sum ) {
1444+ extraSelect = `SUM(${ filter . sum } ) as sumOf${ filter . sum } , ` ;
1445+ }
1446+ if ( filter . count ) {
1447+ extraSelect += `COUNT(${ filter . count } ) as countOf${ filter . count } , ` ;
1448+ }
1449+ if ( filter . avg ) {
1450+ extraSelect += `AVG(${ filter . avg } ) as avgOf${ filter . avg } , ` ;
1451+ }
1452+ if ( filter . min ) {
1453+ extraSelect += `MIN(${ filter . min } ) as minOf${ filter . min } , ` ;
1454+ }
1455+ if ( filter . max ) {
1456+ extraSelect += `MAX(${ filter . max } ) as maxOf${ filter . max } , ` ;
1457+ }
1458+
14421459 let selectStmt = new ParameterizedSQL ( 'SELECT ' +
1460+ extraSelect +
14431461 this . buildColumnNames ( model , filter ) +
14441462 ' FROM ' + this . tableEscaped ( model ) ) ;
14451463
@@ -1449,6 +1467,10 @@ SQLConnector.prototype.buildSelect = function(model, filter, options) {
14491467 selectStmt . merge ( whereStmt ) ;
14501468 }
14511469
1470+ if ( filter . groupBy ) {
1471+ selectStmt . merge ( this . buildGroupBy ( filter . groupBy ) ) ;
1472+ }
1473+
14521474 if ( filter . order ) {
14531475 selectStmt . merge ( this . buildOrderBy ( model , filter . order ) ) ;
14541476 }
@@ -1510,7 +1532,13 @@ SQLConnector.prototype.all = function find(model, filter, options, cb) {
15101532 }
15111533
15121534 const objs = data . map ( function ( obj ) {
1513- return self . fromRow ( model , obj ) ;
1535+ const object = self . fromRow ( model , obj ) ;
1536+ if ( obj [ `sumOf${ filter . sum } ` ] ) { object [ `sumOf${ filter . sum } ` ] = obj [ `sumOf${ filter . sum } ` ] ; }
1537+ if ( obj [ `countOf${ filter . count } ` ] ) { object [ `countOf${ filter . count } ` ] = obj [ `countOf${ filter . count } ` ] ; }
1538+ if ( obj [ `avgOf${ filter . avg } ` ] ) { object [ `avgOf${ filter . avg } ` ] = obj [ `avgOf${ filter . avg } ` ] ; }
1539+ if ( obj [ `minOf${ filter . min } ` ] ) { object [ `minOf${ filter . min } ` ] = obj [ `minOf${ filter . min } ` ] ; }
1540+ if ( obj [ `maxOf${ filter . max } ` ] ) { object [ `maxOf${ filter . max } ` ] = obj [ `maxOf${ filter . max } ` ] ; }
1541+ return object ;
15141542 } ) ;
15151543 if ( filter && filter . include ) {
15161544 self . getModelDefinition ( model ) . model . include (
0 commit comments