请 sql 老司机

2017-12-08 11:21:15 +08:00
 xi2008wang

怎么写 sql 将数字转成占比?

20171101 A 3

20171101 B 5

20171102 A 7

20171102 B 3

=》

20171101 A 3/3+5

20171101 B 5/3+5

20171102 A 7/3+7

20171102 B 3/3+7

3623 次点击
所在节点    MySQL
10 条回复
yulitian888
2017-12-08 11:27:06 +08:00
第一反应是开窗函数,然后看了下是 MySQL,呃,不清楚有没有这个功能,我说的是 Server server
master13
2017-12-08 11:38:49 +08:00
这种问题自行谷歌或者请新司机解答,老司机不开你这条路
whx20202
2017-12-08 11:44:34 +08:00
select col1, col2, 字符串拼接函数( col3,const1,const2 ) from tbl
就可以吧

如果要求数字运算可以搜一下
slgz
2017-12-08 11:46:06 +08:00
我都没看懂题
xi2008wang
2017-12-08 11:50:23 +08:00
@master13 提问之前我已经 google 了
mooncakejs
2017-12-08 11:52:06 +08:00
小学奥数找规律? 每日 /B 占比?
不开窗不好搞。
xi2008wang
2017-12-08 11:57:04 +08:00
咨询部门同事,得到了一个效率不太高的 sql,
select a.date,a.value1,a.value1/b.sum_v from x a,(select date,sum(value1) as sum_v from x ) b where a.date=b.date;
mooncakejs
2017-12-08 11:59:33 +08:00
支持开窗:
select *,num/sum(num) over d as pct from test window d as (partition by date)
不支持:
select t.*,t.num/g.sum as pct from test t join (select date,sum(num) from test group by date) g on t.date = g.date
xi2008wang
2017-12-08 12:05:35 +08:00
@xi2008wang 刚刚漏了 group by

select a.date,a.value1,a.value1/b.sum_v from x a,(select date,sum(value1) as sum_v from x group by date) b where a.date=b.date;
xi2008wang
2017-12-08 12:06:06 +08:00
@mooncakejs 先谢了,我试试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/413043

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX