#每条记录有个平均分,平均分是这样算的,如果评分为0,表明没人给打分,则不计入平均分之列

Gooing 2004-08-02 10:21:42
我的一个视图是这样的
人员id,项目p,评分s1,评分s2,评分s3,评分s4

有如下的记录:
1> 小G,跳水, 5,5,5,3
2> 小G,跳高, 5,4,6,0
3> 大G,跳水,0,0,5,5
......

每条记录应该有个平均分,平均分是这样算的,如果评分为0,表明没人给打分,则不计入平均分之列,如1>是4.5 ,2>是(5+4+6)/3 =5,
而不是(5+4+6+0)/4 = 3.75;最后按人员将平均分的总和给算出来,如:
小G,9.5
大G,5
......

这样的SQL怎么写?我该如何判断 /几 ?
谢谢!
...全文
235 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjr332533 2004-08-02
  • 打赏
  • 举报
回复
select id,
p,
case when s1+s2+s3+s4=0
then 0
else (s1+s2+s3+s4)/((sign(isnull(s1,0))+sign(isnull(s2,0))+sign(isnull(s3,0))+sign(isnull(s4,0)))*1.0)
end as 平均分
from table

wozhuchuanwei 2004-08-02
  • 打赏
  • 举报
回复

Create Table #TB (
id int ,p VarChar(10), s1 int, s2 int, s3 int, s4 int)
INSERT INTO #TB (id,p,s1,s2,s3,s4)
Select 1,'跳水',5,5,5,3 UNION ALL
Select 2,'跳高',5,4,6,0 UNION ALL
Select 3,'跳水',0,0,5,5

Select * FROM #TB
SELECT *,CAST((s1+s2+s3+s4) As decimal(9,3))/(CASE s1 when 0 then 0 Else 1 END+CASE s2 when 0 then 0 Else 1 END+CASE s3 when 0 then 0 Else 1 END+CASE s4 when 0 then 0 Else 1 END) as 平均分 FROM #TB
Drop Table #TB


(所影响的行数为 3 行)

id p s1 s2 s3 s4
----------- ---------- ----------- ----------- ----------- -----------
1 跳水 5 5 5 3
2 跳高 5 4 6 0
3 跳水 0 0 5 5

(所影响的行数为 3 行)

id p s1 s2 s3 s4 平均分
----------- ---------- ----------- ----------- ----------- ----------- ----------------------
1 跳水 5 5 5 3 4.50000000000000
2 跳高 5 4 6 0 5.00000000000000
3 跳水 0 0 5 5 5.00000000000000

(所影响的行数为 3 行)

zjcxc 2004-08-02
  • 打赏
  • 举报
回复
select 人员id,项目p
,平均分=case (isnull(评分s1,0)+isnull(评分s2,0)+isnull(评分s3,0)+isnull(评分s4,0))
when 0 then 0
else (isnull(评分s1,0)+isnull(评分s2,0)+isnull(评分s3,0)+isnull(评分s4,0))
/(case isnull(评分s1,0) when 0 then 0 else 1 end
+case isnull(评分s2,0) when 0 then 0 else 1 end
+case isnull(评分s3,0) when 0 then 0 else 1 end
+case isnull(评分s4,0) when 0 then 0 else 1 end)
end
from 表
victorycyz 2004-08-02
  • 打赏
  • 举报
回复
select id,
p,
case when s1+s2+s3+s4=0
then 0
else (s1+s2+s3+s4)/((sign(s1)+sign(s2)+sign(s3)+sign(s4))*1.0)
end as 平均分
from tablename

victorycyz 2004-08-02
  • 打赏
  • 举报
回复
select id,
p,
case when s1+s2+s3+s4=0
then 0
else (s1+s2+s3+s4)/(sign(s1)+sign(s2)+sign(s3)+sign(s4))
end as 平均分
from tablename

Gooing 2004-08-02
  • 打赏
  • 举报
回复
thank you all!
内容概要:本文围绕基于蜣螂优化法(DBO)的无线传感器网络(WSN)覆盖优化问题展开研究,提出了一种创新性的智能优化解决方案,并提供了完整的Matlab代码实现。研究首先分析了传统WSN覆盖优化中存在的覆盖率低、能耗不均等问题,随后引入蜣螂优化法这一新型群体智能法,通过模拟蜣螂的生物行为机制,构建了适用于传感器节点部署优化的数学模型。文中详细阐述了法的设计思路、实现步骤及其在提高网络覆盖率、延长网络生命周期方面的有效性,同时通过仿真实验与其他主流优化法进行了对比,验证了所提方法的优越性。; 适合人群:具备一定优化法基础和Matlab编程能力,从事通信工程、物联网、智能优化等相关领域的研究生及科研人员。; 使用场景及目标:①解决无线传感器网络中节点部署不合理导致的覆盖盲区问题;②提升网络整体覆盖性能与资源利用效率;③为智能优化法在实际工程中的应用提供可复现的研究案例和技术参考。; 阅读建议:建议读者结合文中的Matlab代码进行实践操作,重点关注法参数设置、适应度函数设计及仿真结果分析部分,同时可尝试将该法迁移至路径规划、资源调度等其他优化场景中进行拓展研究。
已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 在信息技术领域,特别是软件编程行业,微软公司推出的集成开发环境(IDE)Visual Studio,凭借其卓越的功能和广泛的适用范围,成为了众多程序员的常用工具。不过,在实际操作期间,用户可能会遭遇各种挑战,其中一种较为普遍的挑战是“Visual Studio遭遇了异常情况,这或许与某个附加组件有关”。本文将详细研究这一现象的成因、潜在后果以及最终的应对措施。 ### 原因剖析 Visual Studio通过支持多种插件和附加组件来扩展其功能,这些组件通常由第三方开发者设计,旨在为用户提供更多个性化和专业化的工具。然而,这些插件的质量良莠不齐,部分可能未经过充分的测试或与特定版本的Visual Studio存在兼容性难题,从而在执行时引发异常。异常的出现可能源于以下几个因素: 1. **代码缺陷**:若附加组件中的代码存在逻辑问题或资源管理不当,就可能导致运行时异常。 2. **资源竞争**:多个插件同时占用相同的资源(例如内存、文件句柄等),可能会产生资源冲突,进而触发异常。 3. **依赖不匹配**:插件可能需要特定版本的库或框架,如果系统中安装的版本不一致,也可能导致异常。 4. **安全隐患**:部分插件可能存在安全漏洞,一旦被恶意利用,可能会导致更严重的问题,包括但不限于异常崩溃。 ### 后果分析 当Visual Studio遇到由附加组件引发的异常时,不仅会中断当前的工作进程,降低开发效能,还可能带来以下潜在风险: 1. **数据遗失**:若异常发生在保存操作之前,可能会导致未保存的工作内容遗失。 2. **稳定性减弱**:频繁的异常会导致Visual Stud...

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧