聚合查询
Chloe 可以像写 sql 一样实现聚合查询。
IQuery q = context.Query();
q.Select(a => Sql.Count()).First();
/*
* SELECT COUNT(1) AS "C" FROM "USERS" "USERS" WHERE ROWNUM < 2
*/
/* 支持多个聚合函数 */
q.Select(a => new
{
Count = AggregateFunctions.Count(),
LongCount = AggregateFunctions.LongCount(),
Sum = AggregateFunctions.Sum(a.Age),
Max = AggregateFunctions.Max(a.Age),
Min = AggregateFunctions.Min(a.Age),
Average = AggregateFunctions.Average(a.Age)
}).First();
/*
* SELECT COUNT(1) AS "COUNT",COUNT(1) AS "LONGCOUNT",SUM("USERS"."AGE") AS "SUM",MAX("USERS"."AGE") AS "MAX",MIN("USERS"."AGE") AS "MIN",AVG("USERS"."AGE") AS "AVERAGE"
FROM "USERS" "USERS"
WHERE ROWNUM < 2
*/
var count = q.Count();
/*
* SELECT COUNT(1) AS "C" FROM "USERS" "USERS"
*/
var longCount = q.LongCount();
/*
* SELECT COUNT(1) AS "C" FROM "USERS" "USERS"
*/
var sum = q.Sum(a => a.Age);
/*
* SELECT SUM("USERS"."AGE") AS "C" FROM "USERS" "USERS"
*/
var max = q.Max(a => a.Age);
/*
* SELECT MAX("USERS"."AGE") AS "C" FROM "USERS" "USERS"
*/
var min = q.Min(a => a.Age);
/*
* SELECT MIN("USERS"."AGE") AS "C" FROM "USERS" "USERS"
*/
var avg = q.Average(a => a.Age);
/*
* SELECT AVG("USERS"."AGE") AS "C" FROM "USERS" "USERS"
*/