sql语句简单问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 03:01:52
有临时表如下
ID 分类 值
A X 10
A Y 5
A Z 20
B X 3
B Y 12
B Z 9
C X ....

如何用SQL语句计算每条记录的值在其对应ID的全部分类的值中占的比例。

语言表达能力比较差,不知道说明白没有...就是对第一条记录计算10/(10+5+20),对第4条记录计算3/(3+12+9)。

假设这个表里还有一个字段“比例”,请高手帮忙写出计算这个比例并写入“比例”的UPDATE命令,多谢

update table_1
set [value]= ( a1.[innerID]/(
select sum (innerID) from table_1
where [id]=a1.[id] group by [id])
)

from table_1 as a1

table_1 为临时表
innerID为 值
value 为 比例

以上语句可以计算的出来但不知道效率怎么样

需要使用子查询,如果记录数非常多的话,速度会慢。

update a
set 比例=值/(select sum(值) from 表 where id=a.id)
from 表 a

你可以使用
select 值/(select sum(值) from 表 where id=a.id)
from 表 a

来查看效果。

select id, (值/sum(值)) as 比例
from 表
group by id

这个写sql语句还不如直接将数据读出来,然后在程序里比较比较容易。