分段统计的查询

bandit001 2007-10-12 06:10:53
表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)
...全文
144 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bachelorhero 2008-06-01
  • 打赏
  • 举报
回复
好强悍啊 学习中。。。。。。。。。。。。。
bandit001 2007-10-17
  • 打赏
  • 举报
回复
问题已经解决了,谢谢大虾门的意见!回去好好研究!呵呵~
mantisXF 2007-10-12
  • 打赏
  • 举报
回复
不知道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
Croatia 2007-10-12
  • 打赏
  • 举报
回复
假如3种情况都要的话,可以用decode函数来实现。

select user_id from table1 group by user_id
之后的结果集作处理。
k6400 2007-10-12
  • 打赏
  • 举报
回复
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;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧