首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询,使用计数和平均值MS SQL Server Management Studio

SQL查询,使用计数和平均值MS SQL Server Management Studio
EN

Stack Overflow用户
提问于 2011-06-07 18:26:55
回答 2查看 7.5K关注 0票数 1

我是SQL的新手,我想要一些关于这个查询的帮助。这是到目前为止我的脚本。如果你需要更多信息,请告诉我,

代码语言:javascript
复制
SELECT DISTINCT EstimName_String AS Inspector, InspectionProcedureName AS [Inspection         Procedure Name], COUNT(*) AS InspectionsDone
FROM         UnitData_Vehicle
WHERE     (InspectionProcedureName LIKE '%Inspection%')
where datediff(day, phodat_datetime, getdate()) >= 1
and datediff(day, phodat_datetime, getdate()) <= 4
GROUP BY InspectionProcedureName, EstimName_String
ORDER BY Inspector

但我希望看到的是这一点。每个检查员的总数和平均每天,因此Joe Bloggs总共做了99次检查,然后将总数除以一定天数的平均值,即这是4天的价值或inspection.which计算为24.75。这是可能的吗?

代码语言:javascript
复制
Inspector   Inspection Procedure Name   Inspections done    Total   Avg per Day
Joe Bloggs  Inspection                        16            99.00   24.75
Joe Bloggs  Inspection                        1     
Joe Bloggs  Inspection                        4     
Joe Bloggs  Inspection                        78        
Jack sprat  Inspection                        14            87.00    21.75
Jack sprat  Inspection                        73        
Humpty Dumpty   Inspection                    7             75.00    18.75
Humpty Dumpty   Inspection                    68        
Micky Mouse Inspection                        13            80.00     20
Micky Mouse Inspection                        67        
Jack Jill   Inspection                        11            76.00     19
Jack Jill   Inspection                        1     
Jack Jill   Inspection                        64        
EN

回答 2

Stack Overflow用户

发布于 2011-06-07 18:44:24

首先,内部的"prequery“将获得每天的计数……然后以此为基础得到total SUM()和AVG()。这将返回每个检查员一行,而不是您的明细中显示的所有单独的日期。

代码语言:javascript
复制
select 
      InspectionProcedureName AS [Inspection         Procedure Name], 
      EstimName_String AS Inspector, 
      sum( InspectionsDone ) as InspectionsDone,
      avg( InspectionsDone ) as AvgInspections
   from 
      ( SELECT 
            InspectionProcedureName, 
            EstimName_String AS Inspector, 
            datediff(day, phodat_datetime, getdate()) as ByDate,
            COUNT(*) AS InspectionsDone
         FROM
            UnitData_Vehicle
         WHERE     
                InspectionProcedureName LIKE '%Inspection%'
            AND datediff(day, phodat_datetime, getdate()) >= 1
            and datediff(day, phodat_datetime, getdate()) <= 4
         GROUP BY 
            InspectionProcedureName, 
            EstimName_String,
            datediff(day, phodat_datetime, getdate()) ) PreQuery
   ORDER BY 
      Inspector

如果你真的希望检查员每天检查每一行,你基本上必须添加其他魔术来连接相同的内部"PreQuery“来获得独立的一天,并且真正的魔术只显示每个检查员第一行的总数和平均值。

票数 0
EN

Stack Overflow用户

发布于 2011-06-07 20:18:31

代码语言:javascript
复制
SELECT EstimName_String AS Inspector, 
InspectionProcedureName AS [Inspection Procedure Name], 
sum(InspectionsDone) AS Total, 
cast(sum(InspectionsDone) as float)/count(*) as [Avg Per Day]
FROM         UnitData_Vehicle
GROUP BY InspectionProcedureName, EstimName_String
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6263888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档