社区
疑难问题
帖子详情
一个可能比较简单的更新语句的问题:分组求和,然后根据求和结果更新
jjdelphi
2003-09-06 04:48:33
数据表如下:
No Month Score1 Score2 IsOK
1 1 10 12
1 2 11 10
1 3 9 9
2 1 8 7
2 2 9 20
要先按No分别对Score1、Score2汇总,把每个月的值加起来。
然后把汇总结果相除,即sum(Score1)/sum(Score2),
再把结果大于0.5(即sum(Score1)/sum(Score2)>0.5)的记录的IsOK字段赋值为True。
...全文
65
10
打赏
收藏
一个可能比较简单的更新语句的问题:分组求和,然后根据求和结果更新
数据表如下: No Month Score1 Score2 IsOK 1 1 10 12 1 2 11 10 1 3 9 9 2 1 8 7 2 2 9 20 要先按No分别对Score1、Score2汇总,把每个月的值加起来。 然后把汇总结果相除,即sum(Score1)/sum(Score2), 再把结果大于0.5(即sum(Score1)/sum(Score2)>0.5)的记录的IsOK字段赋值为True。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zjcxc
2003-09-06
打赏
举报
回复
效率差不多.
加0.0是为了将整数转换为实型,因为整形相除的结果仍然为整数,根本得不到小数结果,所以要转换一下,你用convert进行数据类型转换也行.
txlicenhe
2003-09-06
打赏
举报
回复
请试一下如下语句就知道为什么要加+0.0了
Select 5/10
select 5.0/10
pengdali
2003-09-06
打赏
举报
回复
update 表 set IsOk='True' where [no] in (select [NO] from 表 group by [No] having sum(Score1)/(sum(Score2)+0.0)>0.5)
如果是整数为什么要 +0.0?
应为要转换成浮点数。
pengdali
2003-09-06
打赏
举报
回复
update 表 set IsOk='True' where [no] in (select [NO] from 表 group by [No] having sum(Score1+0.0)/sum(Score2)>0.5)
jjdelphi
2003-09-06
打赏
举报
回复
zjcxc(邹建) :
1、使用分组和不分组两种方法哪种效率高?
2、如果是整数为什么要 +0.0?
zjcxc
2003-09-06
打赏
举报
回复
如果IsOk是字符型的话,用:
update 表 set IsOk='True'
from 表 a
where (select sum(Score1+0.0)/sum(Score2) from 表 where No=a.No)>0.5
或:
update 表 set IsOk='True'
from 表 a inner join (
select NO,Score=sum(Score1+0.0)/sum(Score2) from 表 grou by No
) b on a.No=b.No
where b.Score>0.5
zjcxc
2003-09-06
打赏
举报
回复
如果你的表中score1和score2是整型的话,用下面的更新语句:
update 表 set IsOk=1
from 表 a
where (select sum(Score1+0.0)/sum(Score2) from 表 where No=a.No)>0.5
或:
update 表 set IsOk=1
from 表 a inner join (
select NO,Score=sum(Score1+0.0)/sum(Score2) from 表 grou by No
) b on a.No=b.No
where b.Score>0.5
zjcxc
2003-09-06
打赏
举报
回复
或:
update 表 set IsOk=1
from 表 a inner join (
select NO,Score=sum(Score1)/sum(Score2) from 表 grou by No
) b on a.No=b.No
where b.Score>0.5
sdhdy
2003-09-06
打赏
举报
回复
update tablename set isok=case when a.score1/a.score2>0.5 then 'true' else 'false' end
from (select no,sum(score1)*1.0 score1,sum(score2)*1.0 score2 from tablenanme group by no) a where a.no=tablename.no
zjcxc
2003-09-06
打赏
举报
回复
update 表 set IsOk=1
from 表 a
where (select sum(Score1)/sum(Score2) from 表 where No=a.No)>0.5
SQL SERVER
分组
求和
sql
语句
您
可能
感兴趣的文章:
分组
后
分组
合计以及总计SQL
语句
(稍微整理了一下)MYSQL每隔10分钟进行
分组
统计的实现方法mysql使用GROUP BY
分组
实现取前N条记录的方法详解MySQL中的
分组
查询与连接查询
语句
sql server如何利用开...
SQL-
分组
求和
分组
求和
数据库执行SQL
语句
跟踪
不管你是刚学习软件开发的初学者,还是在IT职场打拼多年的职场老鸟,都免不了要同各种数据库打交道,你
可能
会碰到以下几个
问题
:1、感觉自己写的sql
语句
没有错,但是执行结果总是不对;2、某个功能执行的
语句
知道有...
mysql
求和
_mysql
分组
求和
还记得我们以前讲过的用SUM...其实这是我们只要把人按性别来
分组
,然后还是用SUM函数来
求和
就可以了,关键是怎么
分组
呢,这就要用到mysql的group by
语句
了,它可以实现
分组
,下面看看sql
语句
吧:SELECT SUM("栏目1")...
DB2 中SQL
分组
求和
小海同学最近在工作中遇到
一个
问题
,那就是对数据库中的某个字段
分组
,插入一行数据对上面的一组的某个字段
求和
,和Excel中的分类汇总类似,我将其称之为“
分组
求和
”。uno 员工编号,name 姓名,brncoBrncd 部门 ...
疑难问题
22,207
社区成员
121,730
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章