求一条不是很复杂的sql语句,关于更新前10%数据的问题

billy36 2005-05-31 12:15:01
现有一个成绩数据库,要求是将各类别、专业的zcj前10%(四舍五入)的考生的备注改为1。

应该用到UPDATE ,但是我能select出前10%,如何update这些selcet的数据呢。

请高手赐教。

类别 专业 zcj 备注
1 1 1
1 1 23
2 5 34
2 2 23
1 1 2
1 1 34
1 1 23
1 1 45

最后得到
5*0.1=0.5 取整为 1个

类别 专业 zcj 备注
1 1 1
1 1 23
2 5 34
2 2 23
1 4 2
1 1 34
1 1 23
1 1 45 1
...全文
122 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pbsql 2005-05-31
  • 打赏
  • 举报
回复
declare @i int
select distinct zcj into #t from t order by zcj--按zcj排序
select @i=floor(count(*)*0.9) from #t--需要删除的90%的数量
set rowcount @i--只删除90%的zcj
delete from #t--删除
select * from t where zcj in (select zcj from #t)--剩下10%
drop table #t
set rowcount 0
posonhuang 2005-05-31
  • 打赏
  • 举报
回复
楼上的不行,因为他没有主键。
zhangzs8896 2005-05-31
  • 打赏
  • 举报
回复
-没看明白,估计你要的大概如此:

update 表
set 备注=1
where 关键字 in
(select 关键字 from 表)
yirufanzhang 2005-05-31
  • 打赏
  • 举报
回复
用游标
yirufanzhang 2005-05-31
  • 打赏
  • 举报
回复
用游标
GRLD8888 2005-05-31
  • 打赏
  • 举报
回复
update table1 set remart=1 where zcj=(select top 10 percent zcj from table1 order by zcj desc)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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