怎么在SQLsql server计算时间差列和平均值

比特客户端
您的位置:
详解大数据
详解大数据
详解大数据
详解大数据
教你如何在SQL Server计算列和平均值
关键字:MSSQL
  严格来说,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:
  假设你希望知道所有客户的平均销售额。你可以使用列表B中的代码,它返回如下错误信息:
  SELECT
  Sales.SalesOrderHeader.SalesOrderID,
  AVG(SUM(Sales.SalesOrderDetail.LineTotal))
  AS AverageFROM
  Sales.SalesOrderHeader
  INNER JOIN Sales.SalesOrderDetail
  ON Sales.SalesOrderDetail.SalesOrder
  ID = Sales.SalesOrderHeader.SalesOrder
  IDGROUP BY
  Sales.SalesOrderHeader.SalesOrderID
  列表B:
  Msg 130, Level 15, State 1, Line 1
  Cannot perform an aggregate function on an expression
  containing an aggregate or a subquery.
  错误信息:
  你可以将平均值的计算过程进行来解决这个问题。你可以将第一部分(SUM)编写成一个表值UDF,如列表C所示。你可以根据列表D中的函数计算平均值。列表E说明你如何能够进行组合。
  USE [AdventureWorks]
  /****** Object: UserDefinedFunction
  [dbo].[SalesTotals_fnt]
  Script Date: 12/09/:54 ******/
  SET ANSI_NULLS ON
  SET QUOTED_IDENTIFIER ON
  CREATE FUNCTION [dbo].[SalesTotals_fnt]()
  RETURNS TABLE
  AS RETURN
  (SELECT SalesOrderID,
  SUM(LineTotal)AS TotalSale
  FROM Sales.SalesOrderDetail
  GROUP BY Sales.SalesOrderDetail.SalesOrderID)
  列表C:
  CREATE FUNCTION [dbo].[AverageSale_fns] (
  -- Add the parameters for the function here
  -- )RETURNS money
  ASBEGIN
  -- Declare the return variable here
  DECLARE @Result money
  -- Add the T-SQL statements to compute the return value here
  SET @Result =(SELECTAvg(TotalSale)AS AverageSale
  FROM dbo.SalesTotals_fnt())
  -- Return the result of the function
  RETURN @Result
  列表D:
  DECLARE @Avg moneySELECT @Avg = dbo.AverageSale_fns()
  SELECT *, @Avg as Average,
  TotalSale / @Avg as Ratio, CASE
  WHEN TotalSale / @Avg & 1 THEN 'Above Average'
  WHEN TotalSale / @Avg & 1 THEN 'Below Average'
  ELSE 'Average' END
  FROM dbo.SalesTotals_fnt()
  列表E:
  现在你知道了如何根据一个子表使用Having子句来测试合计值。当你需要在一个查询中使用两个不同的合计函数时,最好是把它们分解成单独的函数,然后再进行组合(如前一个例子所说明的)。
[ 责任编辑:之极 ]
新经济、新业态环境下,数据量呈…
甲骨文的云战略已经完成第一阶段…
软件信息化周刊
比特软件信息化周刊提供以数据库、操作系统和管理软件为重点的全面软件信息化产业热点、应用方案推荐、实用技巧分享等。以最新的软件资讯,最新的软件技巧,最新的软件与服务业内动态来为IT用户找到软捷径。
商务办公周刊
比特商务周刊是一个及行业资讯、深度分析、企业导购等为一体的综合性周刊。其中,与中国计量科学研究院合力打造的比特实验室可以为商业用户提供最权威的采购指南。是企业用户不可缺少的智选周刊!
比特网络周刊向企业网管员以及网络技术和产品使用者提供关于网络产业动态、技术热点、组网、建网、网络管理、网络运维等最新技术和实用技巧,帮助网管答疑解惑,成为网管好帮手。
服务器周刊
比特服务器周刊作为比特网的重点频道之一,主要关注x86服务器,RISC架构服务器以及高性能计算机行业的产品及发展动态。通过最独到的编辑观点和业界动态分析,让您第一时间了解服务器行业的趋势。
比特存储周刊长期以来,为读者提供企业存储领域高质量的原创内容,及时、全面的资讯、技术、方案以及案例文章,力求成为业界领先的存储媒体。比特存储周刊始终致力于用户的企业信息化建设、存储业务、数据保护与容灾构建以及数据管理部署等方面服务。
比特安全周刊通过专业的信息安全内容建设,为企业级用户打造最具商业价值的信息沟通平台,并为安全厂商提供多层面、多维度的媒体宣传手段。与其他同类网站信息安全内容相比,比特安全周刊运作模式更加独立,对信息安全界的动态新闻更新更快。
新闻中心热点推荐
新闻中心以独特视角精选一周内最具影响力的行业重大事件或圈内精彩故事,为企业级用户打造重点突出,可读性强,商业价值高的信息共享平台;同时为互联网、IT业界及通信厂商提供一条精准快捷,渗透力强,覆盖面广的媒体传播途径。
云计算周刊
比特云计算周刊关注云计算产业热点技术应用与趋势发展,全方位报道云计算领域最新动态。为用户与企业架设起沟通交流平台。包括IaaS、PaaS、SaaS各种不同的服务类型以及相关的安全与管理内容介绍。
CIO俱乐部周刊
比特CIO俱乐部周刊以大量高端CIO沙龙或专题研讨会以及对明星CIO的深入采访为依托,汇聚中国500强CIO的集体智慧。旨为中国杰出的CIO提供一个良好的互融互通 、促进交流的平台,并持续提供丰富的资讯和服务,探讨信息化建设,推动中国信息化发展引领CIO未来职业发展。
IT专家新闻邮件长期以来,以定向、分众、整合的商业模式,为企业IT专业人士以及IT系统采购决策者提供高质量的原创内容,包括IT新闻、评论、专家答疑、技巧和白皮书。此外,IT专家网还为读者提供包括咨询、社区、论坛、线下会议、读者沙龙等多种服务。
X周刊是一份IT人的技术娱乐周刊,给用户实时传递I最新T资讯、IT段子、技术技巧、畅销书籍,同时用户还能参与我们推荐的互动游戏,给广大的IT技术人士忙碌工作之余带来轻松休闲一刻。
微信扫一扫
关注Chinabytesql server 计算每32行的各列的平均值 具体数据如下_百度知道
sql server 计算每32行的各列的平均值 具体数据如下
提问者采纳
AVG([ALL | DISTINCT ]expression)
提问者评价
其他类似问题
31人觉得有用
为您推荐:
平均值的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁sql server查询时怎么使用计算得出的列?_百度知道
sql server查询时怎么使用计算得出的列?
但如果我想直接使用计算得到的总费用字段在sql server里面应该怎么实现呢;总费用 from table1.这样肯定通不过编译比如,sum(费用)as 总费用: select 费用,费用&#47
我有更好的答案
Long 表示经纬度;; 4 and fld_shopname='Lat.Format(@&{2}'SELECT *, 6370 *ACOS(cos( {0} ) * cos(fld_y) * cos({1} - fld_x ) + sin({0}) * sin(fld_y))
FROM 表名where 6370 *ACOS(cos( {0} ) * cos(fld_y) * cos({1} - fld_x ) + sin({0}) * sin(fld_y)) &lt, shangpinming), L&quot, Latstring sql = string
这个回答是直接从别的地方粘过来的吧
其他类似问题
为您推荐:
server的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁您的位置:
用SQL Server Having计算列和平均值
相关栏目:
介绍:用SQL Server Having计算列和平均值,用SQL Server Having计算列和平均值
难度:初级
做为一名数据库语言和用法教师,我发现一些特别难以解释的主题。其中的一个主题为 的Having子句。在本文中,我将简单说明这个子句,并提供一些代码实例,我想这是说明Having子句用法的最佳方法。 严格来说,Having并不需要一个子表,但没有子表的Having并没有实际意义。如果你只需要一个表,那么你可以用Where子句达到一切目的。为进行实践,Having预先假定至少两个表和一个基于第二个表的合计函数。 下面是一个简单的例子:你想要订单总数超过25000美元的客户清单。你需要适当连接的三个表:Customer、SalesOrderHeader和SalesOrderDetail。然后,你求Detail的和,并将总数与25000美元进行比较。查看列表A。 查看列表A中的代码时,有一件事情并不明显,即LineTotal列被计算。你可以像求实际的列的和一样求出已计算列的和。但是,你不能在同一个操作中执行两个不同层次的合计函数。 SET
Sales.Customer.CustomerID,
Sales.SalesOrderHeader.SalesOrderID,
SUM(Sales.SalesOrderDetail.LineTotal) AS SubTotalFROM
Sales.Customer
INNER JOIN Sales.SalesOrderHeader
ON Sales.SalesOrderHeader.CustomerID = Sales.Customer.CustomerID
INNER JOIN Sales.SalesOrderDetail
ON Sales.SalesOrderDetail.SalesOrderID = Sales.SalesOrderHeader.SalesOrderIDGROUP BY
Sales.Customer.CustomerID,
Sales.SalesOrderHeader.SalesOrderIDHAVING SUM(LineTotal)
25000.00ORDER BY
Sales.Customer.CustomerID,
SalesOrderID ;列表A假设你希望知道所有客户的平均销售额。你可以使用列表B中的代码,它返回如下错误信息: SELE
Sales.SalesOrderHeader.SalesOrderID,
AVG(SUM(Sales.SalesOrderDetail.LineTotal)) AS AverageFROM
Sales.SalesOrderHeader
INNER JOIN Sales.SalesOrderDetail
ON Sales.SalesOrderDetail.SalesOrderID = Sales.SalesOrderHeader.SalesOrderIDGROUP BY
Sales.SalesOrderHeader.SalesOrderID列表BMsg 130, Level 15, State 1, Line 1Cannot perform an aggregate function on an expression containing an aggregate or a subquery.错误信息你可以将平均值的计算过程进行分解来解决这个问题。你可以将第一部分(SUM)编写成一个表值UDF,如列表C所示。你可以根据列表D中的函数计算平均值。列表E说明你如何能够进行组合。 USE [AdventureWorks]GO/****** Object:
UserDefinedFunction [dbo].[SalesTotals_fnt]
Script Date: 12/09/:54 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE FUNCTION [dbo].[SalesTotals_fnt]()RETURNS TLEAS RETURN
(SELECT SalesOrderID, SUM(LineTotal)AS TotalSale
FROM Sales.SalesOrderDetail
GROUP BY Sales.SalesOrderDetail.SalesOrderID)<p style="TEXT-INDENT: 2e
来源:/n/6725.html
相关电脑网络推荐
分享给朋友:
拥有教程:59个
共有学生:64位
相关知识点

我要回帖

更多关于 sqlserver平均值 的文章

 

随机推荐