Sql语句问题(100分)

  • 主题发起人 主题发起人 xiaolinj79
  • 开始时间 开始时间
X

xiaolinj79

Unregistered / Unconfirmed
GUEST, unregistred user!
一条sql语句完成从如下表中
EmpID DeptID Price

001 A 500
002 A 600
003 C 400
004 B 550
005 A 700
006 C 300


查询出如下结果
EmpID DeptID Price Sum-price
001 A 500 500
002 A 600 1100
005 A 700 1800
004 B 550 550
003 C 400 400
006 C 300 700
 
看来一条语句是无法达到你的目标的。
sum-price的结果计算方式无法用一条语句得到。
 
老大,显然是可以才问的,这是一条面试题目啊
 
既然已经取到price,同时又进行了order by,为什么不能在界面上,将数据求和?
var
prev_deptID : string;
sum_price : double;
begin
query1.open;
while not query1.eof do
begin
if prev_DeptID<> query1.fields[0].asstring then
sum_price :=0;
sum_price := sum_price + query1.fields[2].asfloat;
...
query1.next;
end;
query1.close;
end;//-----------------ok!
 
请看题目要求,是用sql语句啊,在数据库里执行的
并不是要在delphi中完成
用delphi还用得找提问送上100分吗?
不过还是谢谢你的注意
 
100分很了不起吗?
这种数据库的常识都不懂,price,sum_price是不能共存在一个结果集里面的,第一个人已经给你做了答复了,你没看到吗?
况且
EmpID DeptID Price Sum-price
001 A 500 500
002 A 600 1100
005 A 700 1800
004 B 550 550
003 C 400 400
006 C 300 700
本身就有逻辑错误,
EmpID DeptID Price Sum-price
001 A 500 1800
002 A 600 1800
005 A 700 1800
004 B 550 550
003 C 400 700
006 C 300 700
还差不多,不过你既然非要变态的得到你得结果集,我出于好心才变通了一下.
提醒你一句:用pl/sql还是要用到我的逻辑!
 
我有什么办法,这个鸟面试题就这么BT
 
select EmpID,
DeptID,
price,
(select sum(a.price) from tab1 a where a.DeptID=b.DeptID and a.EmpID<=b.EmpID) Sum-price
from tab1 b
group by EmpID,DeptID,price
order by DeptID,EmpID
你试试吧,不保证好使,你可以查一下有没有对应的函数,别的开发工具上倒有,不知道sql
有没有,还有点别的事,就不帮你查了
 
to eric.youbin:
真不知道你怎么那么肯定的说,你看看对酒当歌的答案
他的是正确的
 
怎么已经结了:

select *,(select sum(price) sum_price from table1 where deptid=a.deptid and empid<=a.empid) from table1 a order by deptid,empid
 
由于有存储过程可以应用,我非常不赞同使用嵌套的SQL语句!这样的效率实在是个问题。
面试时出这种考题,有无搞错?没啥意义!
 
但至少上面的SQL是可能实现的。
 
后退
顶部