今天一道数据库面试题没想出来

th小米粥 发布于 2012/04/16 22:41
阅读 965
收藏 1
原效果
yes    ms
2001  1000
2002  2000
2003  3000
2004  4000
查询效果
yes    ms
2001  1000
2002  3000
2003  4000
2004  10000

他是有规律的,用sql查询出后面的效果。就前面一些值的和。
面试的时候想了半天没想出来。问问大家咯。
加载中
0
qycms_cn
qycms_cn

select yes,
(select sum(ms) from tb_name as A where A.yes<=B.yes) as ms

from tb_name as B order by B.yes asc

一周寂寞七天
一周寂寞七天
这句SQL得出的2003年的MS不会为4000吧?
一周寂寞七天
一周寂寞七天
回复 @仰望星空 : 那个2003年 ms为4000是不是有问题呀?按照逻辑应该是1000+2000+3000=6000呀?
th小米粥
th小米粥
谢谢。学习了。
0
蟋蟀哥哥
蟋蟀哥哥
没懂你题目的意思
0
th小米粥
th小米粥

引用来自“蟋蟀哥哥”的答案

没懂你题目的意思

就是他表的原来结构是

 

yes    ms

2001  1000

2002  2000

2003  3000

2004  4000

 

使用sql语句查询后成为:

 

yes    ms

2001  1000

2002  3000

2003  4000

2004  10000 

 

注意一下他的规律。

0
蟋蟀哥哥
蟋蟀哥哥
两个字段什么意思
0
th小米粥
th小米粥
只是一张表里边的二个字段。一个月份,一个是金额,单词我随便写的。
0
xym
xym

select yes, sum(ms)over(order by yes) as ms from test;

用oracle 自带的分窗函数。

http://blog.csdn.net/wh62592855/article/details/4697080

0
ccav5
ccav5
估计你数据有问题 查询结果2003 年 6000?
返回顶部
顶部