Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
vipinjha123
Starting Member
45 Posts |
Posted - 2012-07-23 : 10:28:58
|
I am having 3 tableDental_201:-Domain,project,process,date,empidAgent:-empid,domain,projectTarget:-domain,project,process,targetMy aim is to find below by using all 3 tableProject Process productivity month avgtarget achivedTo calculate avgtarget logic is :-sum(target)/count(agent)To calculate achived is productivity/count(agent)/21select PROJECT,PROCESS,COUNT(*) Productivity,DATENAME(month,date) Months from DENTAL_201group by PROJECT,PROCESS,DATEorder by PROJECTselect SUM(Daily_Target) total_target from Process_Targetselect COUNT(*) agent from Agent_MasterPlease suggest proper join Regards,Vipin jha |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-07-23 : 10:44:07
|
you'vent given rule to calculate productivity so make sure you add that also and calculate achieved in below querySELECT m.*,n.TargetSum * 1.0/AgentCnt AS avgtarget,..FROM(SELECT t.*,d.[Month],d.[Year]FROM (SELECT DISTINCT domain,project,process FROM Target) tCROSS JOIN (SELECT DISTINCT YEAR(date) AS [Year],DATENAME(mm,date) AS [Month] FROM Dental_201)d)mCROSS APPLY (SELECT SUM(target) AS TargetSum FROM target WHERE domain = m.domain AND project = m.project AND process = m.process)nCROSS APPLY (SELECT count(empid) as AgentCnt FROM Dental_201 dt INNER JOIN Agent a ON a.empid= dt.epmid AND a.domain = dt.domain AND a.project = dt.project WHERE DATENAME(mm,date) = m.[Month] AND YEAR(date) = m.[Year] )o ------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
vipinjha123
Starting Member
45 Posts |
Posted - 2012-07-24 : 01:19:42
|
Table structure of all given tables:-CREATE TABLE [dbo].[Agent_Master]( [EMPLOYEEID] [nvarchar](255) NULL, [EMPLOYEENAME] [nvarchar](255) NULL, [DESIGNATION] [nvarchar](255) NULL, [Domain] [nvarchar](255) NULL, [PROJECT] [nvarchar](255) NULL ) ON [PRIMARY]CREATE TABLE [dbo].[Process_Target]( [Domain] [nvarchar](255) NULL, [Project] [nvarchar](255) NULL, [Daily_Target] [float] NULL, [Process] [nvarchar](255) NULL, [SubProcess] [nvarchar](255) NULL ) ON [PRIMARY]CREATE TABLE [dbo].[DENTAL_201]( [DATE] [datetime] NULL, [DOMAIN] [nvarchar](100) NULL, [PROJECT] [nvarchar](188) NULL, [PROCESS] [nvarchar](100) NULL, [SUBPROCESS] [nvarchar](100) NULL, [EMPID] [nvarchar](10) NULL, [ERROR] [int] NULL) ON [PRIMARY]I am getting count(*) from agent_master means number of agentfrom sum(daily_target) from process_target means sum of al target select count(*) productivity,project,process,datename(month,date) month from dental_201 group by project ,process ,date it give my productivity on monthly basisMy aim is to find below by using all 3 tablePROJECT PROCESS PRODUCTIVITY AVGTARGET ACHIEVEDTo calculate avgtarget logic is :-sum(target)/count(agent)To calculate achived is productivity/count(agent)/21regards,vipin jha |
 |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-07-24 : 09:55:56
|
First start with suggestion given and extend it to add productivity calculation too.Dont wait for full answers to be spoonfed to you..Will definitely help if you face any issues while trying it out yourself..------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
|
|
|
|
|