社区
疑难问题
帖子详情
一个可能比较简单的更新语句的问题:分组求和,然后根据求和结果更新
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。
...全文
69
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
作业
写回复
配置赞助广告
用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
语句
大全(基础篇、提升篇、技巧篇)
ALTER TABLE
语句
用于修改已经存在的表,ADD COLUMN
语句
用于增加
一个
新的列,col 为要增加的列名,type 为列的数据类型。 7. 添加主键:ALTER TABLE tabname ADD PRIMARY KEY (col) ALTER TABLE
语句
用于修改已经...
SQL-
分组
求和
分组
求和
mysql
求和
_mysql
分组
求和
还记得我们以前讲过的用SUM...其实这是我们只要把人按性别来
分组
,然后还是用SUM函数来
求和
就可以了,关键是怎么
分组
呢,这就要用到mysql的group by
语句
了,它可以实现
分组
,下面看看sql
语句
吧:SELECT SUM("栏目1")...
SQL
分组
、
求和
、排名
MySQL 数据根据
分组
求和
在进行排名 一、先熟悉MySQL根SQL Server或Orcal的区别,MySQL是不存在rank()函数 声明
一个
变量,用@来进行声明。例如:@rank 给变量赋值,sql中用 ‘:=’ 给变量赋值。例如:@rank := 0 二...
疑难问题
22,301
社区成员
121,734
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章