表1:
user   name   price  
1     q        2
2     w        6
2     e        7
3     r        4
3     y        5
4     u        5
怎么查询表1中同一user  的price总和在同一范围如(2~5,6~8,>8等)内的数目例如user=2 的sum(price)=6+7=13 ,user=3 的sum(price)=4+5=9 都在 >8的范围内,user数目为2个。请大哥们帮忙,这个判断查询SQL怎么写?(oracel)

解决方案 »

  1.   

    select user_id,count(*)
    from table1
    where user_id in (select user_id 
                      from table1
                      group by user_id
                      having sum(price) >=9)
    group by user_id;
      

  2.   

    假如3种情况都要的话,可以用decode函数来实现。

    select user_id from table1 group by user_id 
    之后的结果集作处理。
      

  3.   

    不知道LZ是不是这个意思 ...======================sql==========================
    select decode(yy.grade,'A','2~5','B','6~8','C','large 8') as gradeClass,
           count(yy.grade) as gradeCount
      from (
            select zz.userid,
                   case when (zz.price)>=2 and (zz.price)<=5
                                then 'A'
                                when (zz.price)>=6 and (zz.price)<=8
                                then 'B' 
                                when zz.price > 8
                                then 'C' 
                         end as grade
              from (
                    select tt.userid, 
                           sum(tt.price) as price
                      from tablename tt
                     group by tt.userid
                    )zz
            )yy
     group by yy.grade;
     
    =====================result========================GRADECLASS GRADECOUNT
    ---------- ----------
    2~5                 2
    large 8             2