科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用SQL Server Having计算列和平均值(1)

用SQL Server Having计算列和平均值(1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

做为一名数据库语言和用法教师,我发现一些特别难以解释的主题。其中的一个主题为SQL Server的Having子句。

作者:builder.com.cn 来源:builder.com.cn 2007年9月4日

关键字: HAVING 数据库 SQL Server SQL Server 各版本

  • 评论
  • 分享微博
  • 分享邮件
 

做为一名数据库语言和用法教师,我发现一些特别难以解释的主题。其中的一个主题为SQL Server的Having子句。在本文中,我将简单说明这个子句,并提供一些代码实例,我想这是说明Having子句用法的最佳方法。

严格来说,Having并不需要一个子表,但没有子表的Having并没有实际意义。如果你只需要一个表,那么你可以用Where子句达到一切目的。为进行实践,Having预先假定至少两个表和一个基于第二个表的合计函数。

下面是一个简单的例子:你想要订单总数超过25000美元的客户清单。你需要适当连接的三个表:Customer、SalesOrderHeader和SalesOrderDetail。然后,你求Detail的和,并将总数与25000美元进行比较。查看列表A。

查看列表A中的代码时,有一件事情并不明显,即LineTotal列被计算。你可以像求实际的列的和一样求出已计算列的和。但是,你不能在同一个操作中执行两个不同层次的合计函数。

SELECT       
Sales.Customer.CustomerID,      
Sales.SalesOrderHeader.SalesOrderID,       
SUM(Sales.SalesOrderDetail.LineTotal) 
AS SubTotalFROM       
Sales.Customer      
INNER JOIN Sales.SalesOrderHeader      
ON Sales.SalesOrderHeader.Customer
ID = Sales.Customer.CustomerID      
INNER JOIN Sales.SalesOrderDetail      
ON Sales.SalesOrderDetail.SalesOrder
ID = Sales.SalesOrderHeader.SalesOrderIDGROUP BY       
Sales.Customer.CustomerID,      
Sales.SalesOrderHeader.SalesOrder
IDHAVING SUM(LineTotal) > 25000.00ORDER BY       
Sales.Customer.CustomerID,      
SalesOrderID ;

列表A
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章