SQL查询,挑战性查询
这是我在Informatica应该做的任务。我只想听取可能的解决办法的介绍。我并不特别需要查询,只是SQL/Oracle中的步骤可能会有很大帮助 问题陈述: NW Telecommunications是印度蜂窝通信的服务提供商。他们在印度所有的州都有业务。作为其业务运营的一部分,他们收集服务取消原因的详细信息,以改进其客户保留策略。他们现在有兴趣了解客户停止服务的主要原因 以下是源表的结构 NWT_连接_详情SQL查询,挑战性查询,sql,oracle,Sql,Oracle,这是我在Informatica应该做的任务。我只想听取可能的解决办法的介绍。我并不特别需要查询,只是SQL/Oracle中的步骤可能会有很大帮助 问题陈述: NW Telecommunications是印度蜂窝通信的服务提供商。他们在印度所有的州都有业务。作为其业务运营的一部分,他们收集服务取消原因的详细信息,以改进其客户保留策略。他们现在有兴趣了解客户停止服务的主要原因 以下是源表的结构 NWT_连接_详情 Phone_No SIM (primary key) Connection_Star
Phone_No
SIM (primary key)
Connection_Start_Date
Rate_Plan_Id
Connection_Status
Connection_Closure_Date
Can_Reason_Id
Cust_Id (foreign key)
Home_Location
取消原因
Can_Reason_Id (primary key)
Can_Text
取消原因表中的数据:
Can_Reason_Id Can_Text
NW Network Issues
MNP Porting to a competitor
RP Rate Plan Issue
RL Relocation
CS Unsatisfactory customer service
结果表是一个汇总表,其中包含所发生取消的汇总。目标表的结构如下所示
取消摘要
你能说出理由吗
取消预订人数
服务期限
地带
注:服务期限为<1个月、1-3个月、3-6个月、6-12个月和>12个月
样本目标表数据:
NW 18 1 to 3 South
NW 5 1 to 3 South
CS 25 3 to 6 North
这是实现您所需功能的基本查询:
select cr.can_text, count(*)
from nwt_connection_details cd join
nwt_cancellation_reason cr
on cd.can_reason_id = cr.can_reason_id
group by cr.can_text
order by count(*) desc
不过,我之所以回答这个问题,是因为这提供了一个对某些事情发表评论的机会。首先,您甚至没有理由考虑在Informatica中执行这样的查询。这是为数据库设计的查询类型。甲骨文是最好的方法
其次,这可能不是你想要的一切。您需要考虑日期、客户类型和任期。通常,有一个OLAP系统来解决这些类型的请求(如果数据不太大,可能是Excel中的透视表)。这样的OLAP系统可以使用Informatica或使用Oracle的查询进行加载。这似乎是一个简单的计数(*)和分组练习。兰迪:问题是我假设用三个变量来分组。区域、日期和取消原因。但在Informatica中实现它意味着你可以打印出漂亮的方框和线条,并把它们贴在墙上。好的,运行时间会延长1000000倍,但是。。。嗯…@Gordon Linoff:我很抱歉,因为我的名声不好,所以我不能投票支持这件事。非常感谢