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