MicroOrm.Net(7) Table.Query() - Group By & Having
2012-04-12 00:41
288 查看
MicroOrm.Net主页:
http://code.google.com/p/micro-orm-net/
MicroOrm.Net系列随便目录总览:
/article/5086838.html
本文我们来讲解MicroOrm.Net的Group By和Having的用法,请看Group By的api:
方法的参数只有Column集合这一种类型,用法很简单,请看下面的代码:
熟悉SQL的同学都知道,在Group By和Select配合使用的时候,出现在Group By子句中的Column可以被直接Select,没有出现在Group By子句中的Column必须经过聚合后才能被Select
db.OrderDetail.Query()
.GroupBy(db.OrderDetail.ProductId)
.Select(db.OrderDetail.OrderId)
上面的代码将会出错,因为Select子句里的OrderDetail.OrderId未出现在Group By子句中,同时也没有被聚合。
上面的代码等价于如下的SQL:
执行这句SQL,SQL Server报错信息如下:
Msg 8120, Level 16, State 1, Line 1
Column 'OrderDetail.OrderId' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Group By时,Select使用Column聚合函数代码如下:
Having一般都和Group By搭配来使用,上面我们演示了Group By的用法,我们再来看看Having的用法,至于到底什么是Having,请大家自己去Google
Having方法的api:
在Group By子句中出现的Column,能直接在Having方法Expression里使用;未出现在Group By子句里的Column,要在Having方法Expression里使用时,必须要聚合。这和上面Group By后Select一样。
db.OrderDetail.Query()
.GroupBy(db.OrderDetail.ProductId)
.Having(db.OrderDetail.Qty > 0)
上面的代码将会出错,因为Having方法里的Expression参数用了 OrderDetail.Qty,但是它并未出现在Group By子句中。
Group By时,Having使用Column聚合函数代码如下:
MicroOrm.Net支持的聚合函数有:Sum、Min、Max、Avg
http://code.google.com/p/micro-orm-net/
MicroOrm.Net系列随便目录总览:
/article/5086838.html
本文我们来讲解MicroOrm.Net的Group By和Having的用法,请看Group By的api:
Query GroupBy(params Column[] columns)
方法的参数只有Column集合这一种类型,用法很简单,请看下面的代码:
db.OrderDetail.Query() .GroupBy(db.OrderDetail.ProductId)
熟悉SQL的同学都知道,在Group By和Select配合使用的时候,出现在Group By子句中的Column可以被直接Select,没有出现在Group By子句中的Column必须经过聚合后才能被Select
db.OrderDetail.Query()
.GroupBy(db.OrderDetail.ProductId)
.Select(db.OrderDetail.OrderId)
上面的代码将会出错,因为Select子句里的OrderDetail.OrderId未出现在Group By子句中,同时也没有被聚合。
上面的代码等价于如下的SQL:
select OrderId from OrderDetail group by ProductId
执行这句SQL,SQL Server报错信息如下:
Msg 8120, Level 16, State 1, Line 1
Column 'OrderDetail.OrderId' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Group By时,Select使用Column聚合函数代码如下:
db.OrderDetail.Query() .GroupBy(db.Order.ProductId) .Select(db.Order.ProductId, db.OrderDetail.Qty.Sum().As("Sum"))
Having一般都和Group By搭配来使用,上面我们演示了Group By的用法,我们再来看看Having的用法,至于到底什么是Having,请大家自己去Google
Having方法的api:
Query Having(Expression criteria)
在Group By子句中出现的Column,能直接在Having方法Expression里使用;未出现在Group By子句里的Column,要在Having方法Expression里使用时,必须要聚合。这和上面Group By后Select一样。
db.OrderDetail.Query()
.GroupBy(db.OrderDetail.ProductId)
.Having(db.OrderDetail.Qty > 0)
上面的代码将会出错,因为Having方法里的Expression参数用了 OrderDetail.Qty,但是它并未出现在Group By子句中。
Group By时,Having使用Column聚合函数代码如下:
db.OrderDetail.Query() .GroupBy(db.OrderDetail.ProductId).Having(db.OrderDetail.Qty.Sum > 0)
MicroOrm.Net支持的聚合函数有:Sum、Min、Max、Avg
相关文章推荐
- MicroOrm.Net(6) Table.Query() - Join & Order By
- MicroOrm.Net(8) Table.Query() - Distinct、Skip & Take
- GROUP BY & HAVING 用法
- 分组数据where & having ,group by & order by
- MicroOrm.Net(4) Table.Query() - Where
- 聚合函数&groupby&having
- SQL语句之group by 和having
- SQL语句之Group By&Having&where
- Hive_6. 数据聚合 -- Group By & Grouping_SETS & RollUp & CUBE & Having
- MicroOrm.Net(5) Table.Query() - Select
- SQL教程重温之group by&having
- MicroOrm.Net(3) Database、Table、Column、Expression、Math&MathE
- Mysql中group by having 用法需要注意的事项
- ASP.NET-->>Get和Post的接收参数:Request.QueryString,Request.Form,Request.Params异同
- SQL group by 和 having
- LINQ体验(7)--LINQ to SQL语句之Group By/Having和Exists/In/Any/All/Conta...
- LINQ系列:LINQ to SQL Group by/Having分组
- sql group by 与 having的用法
- SQL IN GROUP BY ORDER BY HAVING LIKE 原理了解
- LINQ to SQL语句(6)之Group By/Having