表useraccount里有2个字段
userid :用户id
userlevel:用户等级表usertradelog两个字段
userid:用户id,更上一个表对应
usermoney:消费金额
这个表每次消费都记录,所以userid出现很多次现在需求就是。找出userlevel=102的用户消费总额小于500的userid因为聚合函数sum不能放到where里,所以我现在暂时把这个<500的判断放在程序里。而不在sql里。这样问题解决,但是我觉得效率可能没有直接在sql得到好

解决方案 »

  1.   

    sum跟gruop by having搭配用啊。不过你的level=102的用户id应该有很多吧!这样好像有点。。
      

  2.   

    select userid from usertradelog group by userid having sum(userid) < 500不知道是不是你想要的答案
      

  3.   

    select T.userid,sum(T.usermoney) as Total from useraccount A,usertradelog T
     where A.userid=T.userid and A.userlevel=102
      group by T.userid
      having(Total < 500);
      

  4.   


    select userid, sum(usermonoy)
      from usertradelog log, useraccount u
     where u.userlevel = 102
       and u.userid = log.userid
     group by userid
    having sum(usermonoy) < 500