现有三个表
社区表 grouptbl
group_id group_name (字段说明1\社区ID 2\社区名称)
1 三江区
2 新城区
3 花园区
......用户表 usertbl
user_id user_name group_id user_level vip_flag(字段说明1\用户ID 2\用户名称 3\社区ID 4\用户级别 5\新用户标志)
1 张三 1 2级 是
2 李四 1 1级 否
3 王五 2 3级 否
4 冯六 2 1级 是
.............维修表 worktbl
work_id user_id work_date work_level (字段说明1\表ID 2\用户ID 3\维修时间 4\故障级别)
1 2 2007-06-13 严重
2 2 2007-06-17 普通
3 4 2007-06-21 次要
...........
现在需要写SQL分别完成显示这样的结果集
1\按社区显示当月有发生故障的用户数,新用户的故障次数,各个故障级别的故障次数
即显示结果为
社区名 发生故障的用户数 新用户故障次数 严重故障次数 次要故障次数 普通故障次数
三江区 3 5 1 2 6
新城区 5 12 3 8 20
花园区 0 0 0 0 0
......................注意:这里需要说明的是发生故障的用户数指的是统计当月有多少个用户发生了故障,而不是统计发生故障的总数,后面的三个指标倒是统计故障次数的
当这一社区本月没有用户有故障时,那么所有指标都为0.2\按社区显示当月有发生故障的用户数,各个用户级别的发生故障用户数
即显示结果为
社区名 发生故障的用户数 3级用户 2级用户 1级用户
三江区 3 1 2 0
新城区 5 2 1 2
花园区 0 0 0 0
.....................请教,这样的SQL语句怎么写?如果不能写SQL,那么是否只能用存储过程来解决了?望赐教,万分感谢.
社区表 grouptbl
group_id group_name (字段说明1\社区ID 2\社区名称)
1 三江区
2 新城区
3 花园区
......用户表 usertbl
user_id user_name group_id user_level vip_flag(字段说明1\用户ID 2\用户名称 3\社区ID 4\用户级别 5\新用户标志)
1 张三 1 2级 是
2 李四 1 1级 否
3 王五 2 3级 否
4 冯六 2 1级 是
.............维修表 worktbl
work_id user_id work_date work_level (字段说明1\表ID 2\用户ID 3\维修时间 4\故障级别)
1 2 2007-06-13 严重
2 2 2007-06-17 普通
3 4 2007-06-21 次要
...........
现在需要写SQL分别完成显示这样的结果集
1\按社区显示当月有发生故障的用户数,新用户的故障次数,各个故障级别的故障次数
即显示结果为
社区名 发生故障的用户数 新用户故障次数 严重故障次数 次要故障次数 普通故障次数
三江区 3 5 1 2 6
新城区 5 12 3 8 20
花园区 0 0 0 0 0
......................注意:这里需要说明的是发生故障的用户数指的是统计当月有多少个用户发生了故障,而不是统计发生故障的总数,后面的三个指标倒是统计故障次数的
当这一社区本月没有用户有故障时,那么所有指标都为0.2\按社区显示当月有发生故障的用户数,各个用户级别的发生故障用户数
即显示结果为
社区名 发生故障的用户数 3级用户 2级用户 1级用户
三江区 3 1 2 0
新城区 5 2 1 2
花园区 0 0 0 0
.....................请教,这样的SQL语句怎么写?如果不能写SQL,那么是否只能用存储过程来解决了?望赐教,万分感谢.
count(distinct u.user_name) 发生故障的用户数,
sum(decode(u.vip_flag,'是',1,0) 新用户故障次数,
sum(decode(w.work_level,'严重',1,0) 严重故障次数,
sum(decode(w.work_level,'次要',1,0) 次要故障次数,
sum(decode(w.work_level,'普通,1,0) 普通故障次数,
from grouptbl ,usertbl u,worktbl w
where g.group_id=u.group_id and
group by g.group_name另一个类似。
group by g.group_name
select
t3.group_name,
count(1),
sum(decode(t2.user_level,'2级',1,0)),
sum(decode(t2.user_level,'1级',1,0)),
sum(decode(t2.user_level,'3级',1,0))
from worktbl t1,usertbl t2,grouptbl t3
where t1.user_id=t2.user_id and t2.group_id=t3.group_id
group by t3.group_name