htl258(tony)来帮忙!

PBVC 2010-05-31 08:22:12
ITEM_NO COL1
A 100
A 100
B 100
B 100
B 100


-----------------------------------
要求结果如下

ITEM_NO COL1 COL2
A 100 50%
A 100 50%
B 100 33%
B 100 33%
B 100 33%



------------
select ITEM_NO ,COL1
,ltrim(cast(COL1*100.0/sum(COL1) over(partition by ITEM_NO ) as int))+'%' as col2
from tb

以上能不能改成UPDATE语句的啊?

...全文
152 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
htl258_Tony 2010-05-31
  • 打赏
  • 举报
回复
--> 生成测试数据表: [tb]
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb] ([ITEM_NO] [nvarchar](10),[COL1] [int],[COL2] [varchar](10))
INSERT INTO [tb]
SELECT 'A','100',NULL UNION ALL
SELECT 'A','100',NULL UNION ALL
SELECT 'B','100',NULL UNION ALL
SELECT 'B','100',NULL UNION ALL
SELECT 'B','100',NULL

--SELECT * FROM [tb]

-->SQL查询如下:

-->SQL查询如下:
;WITH t AS
(
SELECT *, COL3 = LTRIM(COL1*100/SUM(COL1)OVER(PARTITION BY ITEM_NO))+'%'
FROM [tb]
)
UPDATE t SET col2=col3

SELECT * FROM tb
/*
ITEM_NO COL1 COL2
---------- ----------- -------------
A 100 50%
A 100 50%
B 100 33%
B 100 33%
B 100 33%

(5 行受影响)


*/
黄_瓜 2010-05-31
  • 打赏
  • 举报
回复
对了,你的百分比究竟是怎么算的?
你的数据有点特殊
黄_瓜 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 pbvc 的回复:]
ITEM_NO COL1
A 100
A 100
B 100
B 100
B 100


-----------------------------------
要求结果如下

ITEM_NO COL1 COL2
A 100 50%
A 100 50%
B 100 33%
B 100 33%
B 100 33%



------------
select……
[/Quote]

上一贴好多人都回了,你都不开。。。。。。。。。
黄_瓜 2010-05-31
  • 打赏
  • 举报
回复
if object_id('tempdb.dbo.#tb') is not null drop table #tb
go
create table #tb([ITEM_NO] varchar(1),[COL1] int,[col2] sql_variant)
insert #tb
select 'A',100,null union all
select 'A',100,null union all
select 'B',100,null union all
select 'B',100,null union all
select 'B',100,null

--------------------------------查询开始------------------------------
update #tb set col2=ltrim((cast(100.0/(select count(*) from #tb where ITEM_NO=a.ITEM_NO) as decimal(9,2))))+'%'
from #tb a

select * from #tb
/*
ITEM_NO COL1 col2
------- ----------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
A 100 50.00%
A 100 50.00%
B 100 33.33%
B 100 33.33%
B 100 33.33%

(5 行受影响)

*/
GOODlivelife 2010-05-31
  • 打赏
  • 举报
回复
update a
set col2=ltrim(a.col1*100/b.col)+'%'
from tb a
join(select item_no,sum(col1)col from tb group by item_no) b
on a.item_no=b.item_no

select * from tb
/**
ITEM_NO COL1 col2
------- ----------- ----------
A 100 50%
A 100 50%
B 100 33%
B 100 33%
B 100 33%

(5 行受影响)

**/
GOODlivelife 2010-05-31
  • 打赏
  • 举报
回复
不是写了有吗
这个是完整源码 python实现 大数据 Spark pyspark 可视化大屏+Kafka+FastAPI+Vue3 【大数据毕业设计】基于Spark实时电商用户行为分析与预测(Python版本+pyspark+可视化大屏+Kafka+FastAPI+Vue3) 源码+论文 完整版 数据库Mysql 随着电子商务规模持续扩大,用户在浏览、加购、收藏与购买等环节产生的行为数据呈现高并发、高吞吐与强时效特征。传统离线批处理分析难以满足运营决策对实时性的要求。本文设计并实现了一套基于 Spark 的实时电商用户行为分析与预测系统,围绕“数据采集—流式计算—指标落库—可视化展示—销售预测”的完整链路展开研究与工程实践。 系统采用前后端分离架构:前端基于 Vue3、Element Plus 与 ECharts 构建管理端与数据大屏;后端采用 Python FastAPI 提供 RESTful 接口,并结合 JWT 完成管理员身份认证;实时链路以 Kafka 作为消息中间件承接行为事件,以 Spark Structured Streaming 完成按小时窗口的 PV、UV、加购、收藏、购买与销售额聚合;预测模块基于 Spark ML 线性回归对销售额序列进行建模,并输出 RMSE、MAE、MAPE 等误差指标。数据持久化采用 MySQL,数据库名为 db_ecommerce,核心业务表均以 t_ 前缀命名。 测试结果表明,系统能够稳定完成管理员登录、个人中心维护、行为与商品管理、实时统计展示、销售预测对比及流水线状态监控等功能,具备较好的可扩展性与教学示范价值,可为电商运营提供实时洞察与辅助决策支持。 本文的主要工作包括:完成系统需求分析与总体架构设计;绘制实体属性图与实体关系图并完成八张核心业务表设计;实现基于 Kafka 与 Spark 的实时统计及销售预测链路;完成 Vue

34,875

社区成员

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

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