锁定老帖子 主题:sql题目
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-09
你直接写(工资+1000)×2还好点
还有虽然能直接用SQL查出来来 但对性能是极大的损耗 真不明白出题的人是什么水品 |
|
返回顶楼 | |
发表时间:2011-08-09
wolfhk 写道 select year,sum(salary) over(order by year) from table;
刚从联创离职不久,我以前去联创面试的时候怎么没看到过这个题目。。 窗口函数,不错啊 |
|
返回顶楼 | |
发表时间:2011-08-10
首先嵌套子查询是不推荐的(2楼兄弟的).虽然在这不会有什么性能问题.但是这种方法估计会被面试官BS........
比较好的是连接 select a.year, sum(b.sal) from yourtable a left join yourtable b on a.year >= b.year group by a.year 这种方法是比较靠谱的.. 如果你想向面试官展示一下你的SQL功底.. 还可以show一下分析函数 select year,sum(sal) over(order by sal rows between unbounded preceding and 0 following) from yourtable 是不是很帅...... |
|
返回顶楼 | |
发表时间:2011-08-10
最后修改:2011-08-10
如果是mysql可以如此那么。。。
SET @price=0; SELECT @price:=price+@price,`year`FROM hello ORDER BY `year` ASC |
|
返回顶楼 | |
发表时间:2011-08-10
但就这一个问题来说,没有比select 年份,(1000+工资)*工资/2000 from table 效率更高的了。
|
|
返回顶楼 | |
发表时间:2011-08-10
最后修改:2011-08-10
idle_sun 写道 首先嵌套子查询是不推荐的(2楼兄弟的).虽然在这不会有什么性能问题.但是这种方法估计会被面试官BS........
比较好的是连接 select a.year, sum(b.sal) from yourtable a left join yourtable b on a.year >= b.year group by a.year 这种方法是比较靠谱的.. 如果你想向面试官展示一下你的SQL功底.. 还可以show一下分析函数 select year,sum(sal) over(order by sal rows between unbounded preceding and 0 following) from yourtable 是不是很帅...... 接受鄙视。。跟组织学习。。 不过你sql有点问题 应该是inner |
|
返回顶楼 | |
发表时间:2011-08-10
最后修改:2011-08-10
tonly85 写道 harry_bote 写道 去年面试联创的时候遇到过这个题目, 当时我一看就知道怎么做了,利用小学学的那个高斯公式,不到半分钟写出了
select 年份,(1000+工资)*工资/(工资*2) from table ,那个组长一愣,验证了一下说,对是对,有点剑走偏锋的感觉,回去等通知吧。 阁下很会找规律啊,不过前提是工资成等差数列才可行。 harry_bote 写道 不好意思,打错了,是(1000+工资)*工资/2000
居然还有人说这个方法有才-_-!,还高斯公式,真是服了,就这垃圾公式也配叫高斯公式?这个只能说那组长还水了,要是我直接K了你,你这完全没理解题目需求,明显的是要求工资累计值,二楼的方法才是正解。 从数学原理上看你这个也不靠谱,你这个只能适应工资的等差值为1000的情况, 如果原表中工资分别是1000,3000,5000.... 你这个就梗屁了,如果照你这样搞,我有一万种方法查出题目所要的结果。 退一万步说就算工资是等差算列,也应该写成这样: select 年份, (1000+工资)*(select count(*) from table a where a.年份<= b.年份)/2 from table b |
|
返回顶楼 | |
发表时间:2011-08-10
select year,sum(score) over(order by year) from 表
|
|
返回顶楼 | |
发表时间:2011-08-11
用Oracle的分析函数,连续求和
|
|
返回顶楼 | |
发表时间:2011-08-11
leonayx123 写道 idle_sun 写道 首先嵌套子查询是不推荐的(2楼兄弟的).虽然在这不会有什么性能问题.但是这种方法估计会被面试官BS........
比较好的是连接 select a.year, sum(b.sal) from yourtable a left join yourtable b on a.year >= b.year group by a.year 这种方法是比较靠谱的.. 如果你想向面试官展示一下你的SQL功底.. 还可以show一下分析函数 select year,sum(sal) over(order by sal rows between unbounded preceding and 0 following) from yourtable 是不是很帅...... 接受鄙视。。跟组织学习。。 不过你sql有点问题 应该是inner 不好意思.. 唉 习惯的left join了.... 顺手就打出来了..... T.T |
|
返回顶楼 | |