﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="84754bd9-a312-4270-8642-a05946b83fc7" codekey="ERGODirekt_StatistikWBTsProZielgruppe" categoryCodekey="LearningPrograms" name="Statistik WBTs Pro Zielgruppe" description="Dieser Report stammt aus der Datei KQV / StatistikWBTsProZielgruppe.sql">
      <MetaData created="2012-01-10T13:02:13" createdBy="Anton Administrator (Administrator)" createdBy_user_id="12" modified="2012-01-10T13:22:54" modifiedBy="Anton Administrator" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="OnlyOwner" mandator_id="c5fd8bcc-2b1a-4f1d-b30d-9063c3f768cc" mandatorName="ERGODirekt" isStandard="False" isUsedByMenu="False" />
      <Parameters>
        <Parameter id="a5485539-67e0-4912-8255-8081a54efb3c" isRequired="False" name="Zielgruppe" contextName="Zielgruppe" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <Parameter id="d8e4595f-8bdd-4a54-9298-8f378450e6a0" isRequired="False" name="Zeitraum" contextName="Zeitraum" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
      <Roles>
        <Role id="90" />
      </Roles>
      <command> -- helpfull stuff for debugging

/*
declare @current_mandator_id uniqueidentifier
set @current_mandator_id = 'C5FD8BCC-2B1A-4F1D-B30D-9063C3F768CC'

declare @targetGroup_id int
set @targetGroup_id = 3
-- set @targetGroup_id = 36

declare @dateRange_start datetime
set @dateRange_start = '01-01-2009'

declare @dateRange_end datetime
set @dateRange_end = '02-01-2009'
*/
-----------------------------------------------

declare @to datetime
set @to = dateadd(day,1,@dateRange_end)

declare @mandator_id uniqueidentifier
set @mandator_id = @current_mandator_id

select 'Zielgruppe: ' + title + '    Startdatum: ' + CONVERT(VARCHAR(12),@dateRange_start,104) + '  Enddatum: ' + CONVERT(VARCHAR(12),@dateRange_end,104) AS Filterkriterien 
from tblTargetGroups WHERE tblTargetGroups.id=@targetGroup_id

declare @usersInTargetGroup int

/*
-- the current number
set @usersInTargetGroup = 
	(select count(*) 
	 from tblUsersTargetGroups
	 where tblUsersTargetGroups.targetGroup_id=@targetGroup_id
    )
*/

select distinct user_id
into #UserInTargetGroup
from tblStatsUsersTargetGroups
where tblStatsUsersTargetGroups.targetGroup_id=@targetGroup_id
and tblStatsUsersTargetGroups.addedTime&lt;=@dateRange_end 
and (tblStatsUsersTargetGroups.removedTime is null or tblStatsUsersTargetGroups.removedTime&gt;@to)

-- calculate the number of users in the target group in the given time period
set @usersInTargetGroup = (select count(*) from #UserInTargetGroup)
/*
	(select count(distinct user_id)
	 from tblStatsUsersTargetGroups
	 where tblStatsUsersTargetGroups.targetGroup_id=@targetGroup_id
		and tblStatsUsersTargetGroups.addedTime&lt;=@dateRange_end 
		and (tblStatsUsersTargetGroups.removedTime is null or tblStatsUsersTargetGroups.removedTime&gt;@to)
	)
*/
-- find out the number of executions, the distinct number of users
-- and the total execution time in the given time period of all the 
-- themes which are accessible by the selected target group
-- put them into a temporary table
select tblItems.Title as name,
	(select count(*) 
	 from tblStatsThemeSessions
	 inner join #UserInTargetGroup on #UserInTargetGroup.user_id=tblStatsThemeSessions.user_id
	 where tblStatsThemeSessions.theme_id=tblThemes.id
     and tblStatsThemeSessions.startTime&gt;=@dateRange_start and tblStatsThemeSessions.startTime&lt;=@to
    ) as executions,
    0.0*1.0 as executionsPerUser,
	(select count(distinct tblStatsThemeSessions.user_id) 
	 from tblStatsThemeSessions 
	 inner join #UserInTargetGroup on #UserInTargetGroup.user_id=tblStatsThemeSessions.user_id
	 where tblStatsThemeSessions.theme_id=tblThemes.id
     and tblStatsThemeSessions.startTime&gt;=@dateRange_start and tblStatsThemeSessions.startTime&lt;=@to
    ) as users,
    0 as executionTimePerUser,
	(select sum(durationSeconds) 
	 from tblStatsThemeSessions 
	 inner join #UserInTargetGroup on #UserInTargetGroup.user_id=tblStatsThemeSessions.user_id
	 where tblStatsThemeSessions.theme_id=tblThemes.id
     and tblStatsThemeSessions.startTime&gt;=@dateRange_start and tblStatsThemeSessions.startTime&lt;=@to
    ) as totalExecutionTime
into #Result
from tblThemes
INNER JOIN tblItems ON tblItems.id = tblThemes.id
inner join tblModuleItems on tblModuleItems.item_id=tblThemes.id
inner join tblEduOffersModules on tblEduOffersModules.module_id=tblModuleItems.module_id
inner join tblEduOffersTargetGroups on tblEduOffersTargetGroups.eduOffer_id=tblEduOffersModules.eduOffer_id
where tblItems.deleted IS NULL AND tblEduOffersTargetGroups.targetGroup_id=@targetGroup_id

-- drop theme all which are not executed
-- delete from #Result where #Result.executions=0

update #Result
set #Result.totalExecutionTime=0
where #Result.totalExecutionTime is null

-- calculate the executionsPerUser
update #Result
set #Result.executionsPerUser = #Result.executions*1.0 / #Result.users*1.0
where #Result.users&gt;0

-- calculate the executionTimePerUser
update #Result
set #Result.executionTimePerUser = cast(#Result.totalExecutionTime*1.0 / #Result.executions*1.0 as int)
where #Result.executions&gt;0

select 
	#Result.name as 'Name',
	#Result.users as 'Benutzer',
	#Result.executions as 'Aufrufe',
	@usersInTargetGroup as 'Benutzer (gesamt)',
	#Result.executionsPerUser as 'Aufrufe pro Nutzer',
	CASE WHEN #Result.executionTimePerUser/3600&lt;10 THEN '0' ELSE '' END 
    + RTRIM(#Result.executionTimePerUser/3600) 
    + ':' + RIGHT('0'+RTRIM((#Result.executionTimePerUser % 3600) / 60),2) 
    + ':' + RIGHT('0'+RTRIM((#Result.executionTimePerUser % 3600) % 60),2) as 'Bearbeitungszeit pro Aufruf (HH:MM:SS)',
	CASE WHEN #Result.totalExecutionTime/3600&lt;10 THEN '0' ELSE '' END 
    + RTRIM(#Result.totalExecutionTime/3600) 
    + ':' + RIGHT('0'+RTRIM((#Result.totalExecutionTime % 3600) / 60),2) 
    + ':' + RIGHT('0'+RTRIM((#Result.totalExecutionTime % 3600) % 60),2) as 'Gesamtbearbeitungszeit (HH:MM:SS)'

from #Result
order by #Result.name

drop table #UserInTargetGroup
drop table #Result
</command>
    </Report>
  </Reports>
  <Parameters>
    <Parameter id="a5485539-67e0-4912-8255-8081a54efb3c" isSystem="True" name="Zielgruppe" reportParameterType_id="9ae252e1-18b4-4b71-982c-e27b2d3a5287" queryParameterName="@targetGroup_id" />
    <Parameter id="d8e4595f-8bdd-4a54-9298-8f378450e6a0" isSystem="True" name="Zeitraum" reportParameterType_id="abff13be-91c3-4ee1-93a3-7292f8e013ba" queryParameterName="@dateRange" />
  </Parameters>
  <ParameterTypes>
    <ParameterType id="9ae252e1-18b4-4b71-982c-e27b2d3a5287" isSystem="True" name="TargetGroup" datatype="TargetGroup" dataValueField="" dataTextField="" />
    <ParameterType id="abff13be-91c3-4ee1-93a3-7292f8e013ba" isSystem="True" name="DateRange" datatype="DateRange" dataValueField="" dataTextField="" />
  </ParameterTypes>
</ReportsExport>