日期:2014-05-17  浏览次数:20985 次

oracle10g,一个聚合查询难题。。。
直入正题: 表mail_in :
其中mail_num列有重复,代表邮件编号;org_code 也有重复,代表投递机构;dlv_sts_code 也有重复,代表投递状态。
业务简介:投递员投递一次邮件,就会在该表中产生一条记录投递邮件号,投递员所属机构,投递状态的信息。投递状态可能为H也可能为I。
要求:用一个查询语句 查出每个机构投递邮件总数和投递状态为I的数量。(一个邮件编号代表一个邮件)。
在线等

------解决方案--------------------
SELECT 
ORG_CODE,NUMI+NUMH NUMALL,NUMI
FROM
(
select 
org_code,sum(decode(dlv_sts_code,'I',1,0)NUMI,sum(decode(dlv_sts_code,'H',1,0)NUMH
from 
(
select distinct mail_num,org_code,dlv_sts_code)ta
GROUP BY ta.org_code,ta.dlv_sts_code
)