面试题的问题先放到一边,这里还有一个更难的哦!(0分)

  • 主题发起人 主题发起人 ygq
  • 开始时间 开始时间
Y

ygq

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有一个统计问题如下:
库的设计如:编号 名称 单价 数量
内容举例如:01 *** 0。5 1000
011 *** 0。4 1000
012 *** 0。2 250
0121 *** 0。1 125
0122 *** 0。1 125
013 *** 0。5 100
我现在要统计这么一个东西,就是希望检验

01对应的(单价*数量)=011(单价*数量)+012(单价*数量)+013(单价*数量);
012对应的(单价*数量)=0121(..)+0122(..);

希望得到原理以及具体的实现办法(语句)!
 
SELECT left(编号,len(编号)-1) AS fname, sum(单价*数量) AS fcount
FROM t1 WHERE len(编号) >2
GROUP BY left(编号,len(编号)-1);
这样是根据细则统计的值就是你所列的检验等式的右边。
 
你能不能把数据导到几个表后再统计。
 
看上去像一个Bom表。
g622的解法没有考虑编号位数为1的情况;
并且只是给出统计结果,并不为检验统计结果带来方便。

如果该表是想利用编号反映层次关系的话,不如直接添加一个字段用以反映父子关系。
 
我以为他最小的编号就是01,如果错了可以把where条件去掉。
而且也不确切知道检验后该怎样提交检验的结果
(是把统计值不符的fname,fcount提交给用户 还是把编号 单价 数量提交给
用户 或者是统计不符的记录细则?leepin知道吗 :)
但私下以为这样统计出来以后,只要在原表中找到“编号=fname”
的记录和统计值比较一下就可以了,至于提交给用户是什么形式还是看ygq的应用吧
 
在我的表里,01确实是最小的,呵呵!
 
SELECT left(编号,len(编号)-1) AS fname, sum(单价*数量) AS fcount
FROM t1 WHERE len(编号) >2
GROUP BY left(编号,len(编号)-1);
这个好像在DELPHI里面运行的时候要出错,说left()不存在,还有len(编号)是无效的关键字?
怎么回事?
 
强烈同意tinytao的意见,看似简单,不如少动一点脑筋,多写一点代码,
只要问题解决了就行。
 
你是用什么数据库的?
上面的sql我在access里通过的。
left(s,i)是从左取s字符串的i个字符,len(s)是取s字符串的长度
这两个函数在你用的数据库里可能名称不一样
 
我用得是PARADOX表
 
看上去确实是个bom的运算,关键要巴bom设计好.
 
后退
顶部