一个简单报表统计的SQL (在线等)=======

sukey00 2006-09-18 03:48:28
一个简单报表统计的问题,表结构和数据如下

事故表(acciednt)

aID atype(事故类型) aname(事故名称)

1 交通事故 2005交通事故

2 设备事故 2005设备事故

3 交通事故 2006交通事故

4 环境事故 2005环境事故

人员死亡表(acciedntUser)

uid aID(事故ID) deathCount(死亡人数)
1 1 5
2 3 20
3 3 5
4 1 5

如何统计出如下结果(统计“事故类型下的事故次数和死亡人数”)

事故类型 事故次数 死亡人数

交通事故 2 10
设备事故 2 25
环境事故 0 0

谢谢各位大侠了
...全文
246 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eric_1999 2006-09-18
  • 打赏
  • 举报
回复
慢了。还是写一句~~~~
select ac.atype 事故类型,count(au.uid) 事故次数 ,sum(au.deathCount) 死亡人数
from acciednt ac,acciedntUser au
where ac.aID=au.aID(+)
group by ac.atype
wiler 2006-09-18
  • 打赏
  • 举报
回复
select atype 事故类型,count(uid) 事故次数 ,sum(deathCount) 死亡人数
from acciednt a,acciedntUser b
where a.aID=b.aID(+)
group by a.atype
子陌红尘 2006-09-18
  • 打赏
  • 举报
回复
更正之前的几处错误:
---------------------------------------------------------------------------------
Oracle 9i以下版本:

select
at.atype as 事故类型,
nvl(count(b.uid),0) as 事故次数,
nvl(sum(b.deathCount),0) as 死亡人数
from
acciednt at,
acciedntUser au
where
at.aID(+)=au.aID
group by
at.aID,at.atype




Oracle 9i及以上版本:

select
at.atype as 事故类型,
nvl(count(b.uid),0) as 事故次数,
nvl(sum(b.deathCount),0) as 死亡人数
from
acciednt at
left join
acciedntUser au
on
at.aID=au.aID
group by
at.aID,at.atype
子陌红尘 2006-09-18
  • 打赏
  • 举报
回复
Oracle 9i以下版本:

select
at.atype as 事故类型,
nvl(count(b.uid),0) as 事故次数,
nvl(sum(b.deathCount),0) as 死亡人数
from
acciednt at,
acciedntUser au
where
at.aID=au.aID(+)
group by
at.aID,at.atype




Oracle 9i及以上版本:

select
at.atype as 事故类型,
nvl(count(b.uid),0) as 事故次数,
nvl(sum(b.deathCount),0) as 死亡人数
from
acciednt at
left join
acciedntUser au
on
at.aID*=au.aID
group by
at.aID,at.atype
子陌红尘 2006-09-18
  • 打赏
  • 举报
回复
select
at.atype as 事故类型,
nvl(count(b.uid),0) as 事故次数,
nvl(sum(b.deathCount),0) as 死亡人数
from
acciednt at,
acciedntUser au
where
at.aID*=au.aID
group by
at.aID,at.atype

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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