当前位置:首页
开发技术指南» 文章正文
    引言:

 ·,最后一个得最多分    »显示摘要«
    摘要: 呵呵 ......
    摘要: 提供者有重奖,但是必须先测试真的有效才给,决不食言,在线等 就是不管什么图片来 想抠就扣 主要是针对没有什么背景的图片进行抠图 谢谢了 ......


敬请大家指点:使用sum函数引起的奇怪结果

在进行数据库查询中遇到如下问题:  
  数据库中有2个表:income,expend,  
  其中income中有一列i_num,列中有2条记录,数值均为1;  
  expend中有一列e_num,列中有3条记录,数值均为2;  
  我们记:  
  i_num的记录之和——a1;  
  i_num的记录行数——m1;  
  e_num的记录之和——a2;  
  e_num的记录行数——m2;  
  现在想将income中,列i_num的值相加,然后减去expend中e_num的记录之和,  
  即:a1-a2=(1+1)-(2+2+2)=-4,这是我们设想的结果,我写的select语句是:  
  select   sum(i_num)-sum(e_num)   from   income,expend  
  但这样计算的结果为-6,经过研究,这个-6是通过下面这个公式得来的:  
  a1*m2-a2*m1=(1+1)*3-(2+2+2)*2=-6,  
  这个是很没有道理的啊!怎么会和行数有关系呢??  
  百思不得其解!  
  然后改select语句如下后,结果就正确了:  
  select   (select   sum(i_num)   from   income)-(select   sum(e_num)   from   expend)  
  想请问各位高人们这是为什么呢?  
  谢了谢了!!

NO.1   作者: duanzilin

你先把2表关联了,实际上是求下面记录的sum  
  select   i_num,e_num   from   income,expend  
  i_num   e_num    
  1             2  
  1             2  
  1             2  
  1             2  
  1             2  
  1             2  
  select   sum(i_num)-sum(e_num)   from   income,expend  
  这样当然是-6啦  
 

NO.2   作者: zjcxc

select   a1*m2-a2*m1  
  from(select   a1=sum(i_num),m1=count(*)   from   income)a,  
  (select   a2=sum(e_num),m2=count(*)   from   expend)b  
 

NO.3   作者: hsj20041004

declare   @sum_i_num   integer  
  declare   @sum_e_num     integer  
  select   @sum_i_num   =sum(i_num)   from   income  
  select   @sum_e_num   =   sum(e_num)   from   expend  
  select   @sum_i_num   -   @sum_e_num    
   
 


    摘要: 机型:索尼爱立信k508c 请问:哪里可以下载相应的: 1)开发包; 2)模拟器 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE