$c = $modx->newQuery('modUser');
$c->select('SUM(`Tracker`.`lastclick`-`Tracker`.`logintime`) AS `duration`');
$c = $modx->newQuery('modUser');
$c->innerJoin('modUserProfile','Profile','modUser.id = Profile.internalKey');
$c->innerJoin('modUserGroupMember','UserGroupMembers','modUser.id = UserGroupMembers.member');
$c->innerJoin('modUserGroup','UserGroup','`UserGroupMembers`.`user_group` = `UserGroup`.`id`');
$c->leftJoin('sesTracker','Tracker','modUser.id = Tracker.user');
$c->where(array(
'active' => true,
'UserGroupMembers.user_group:=' => '2', // specific user group
));
$c->andCondition("`Tracker`.`logintime` > '".$periodStart."'");
$c->andCondition("`Tracker`.`lastclick` < '".$periodEnd."'");
foreach($hideDoms as $hid){
$c->andCondition("`Profile`.`email` NOT LIKE '%".$hid."'");
}
$c->groupby('modUser.id');
$c->select('
`modUser`.`username`,
`Profile`.`fullname` as `fullname`,
`Profile`.`email` as `email`,
`Profile`.`internalKey` as `userid`,
`Profile`.`extended` as `extended`,
`UserGroup`.`name` AS `usergroup_name`,
SUM( `Tracker`.`lastclick` - `Tracker`.`logintime` ) AS `duration`,
SUM(`Tracker`.`clicks`) AS `totalClicks`,
COUNT(`Tracker`.`id`) AS `sessionCount`
');
/* this line is breaking it:
SUM(`Tracker`.`lastclick`-`Tracker`.`logintime`) AS `duration`,
*/
$c->sortby('duration','DESC');
$c->limit($topNumber,0);
$sessions = $modx->getCollection('modUser',$c);
SELECT `modUser`.`username`, `Profile`.`fullname` as `fullname`, `Profile`.`email` as `email`, `Profile`.`internalKey` as `userid`, `Profile`.`extended` as `extended`, `UserGroup`.`name` AS `usergroup_name`, SUM(`Tracker`.`lastclick`-`Tracker`.`logintime`) AS `duration`, SUM(`Tracker`.`clicks`) AS `totalClicks`, COUNT(`Tracker`.`id`) AS `sessionCount` FROM `modx_users` AS `modUser` JOIN `modx_user_attributes` `Profile` ON modUser.id = Profile.internalKey JOIN `modx_member_groups` `UserGroupMembers` ON modUser.id = UserGroupMembers.member JOIN `modx_membergroup_names` `UserGroup` ON `UserGroupMembers`.`user_group` = `UserGroup`.`id` LEFT JOIN `modx_session_tracker` `Tracker` ON modUser.id = Tracker.user WHERE ( ( `modUser`.`active` = '1' AND `UserGroupMembers`.`user_group` = '2' ) AND `Tracker`.`logintime` > '1287752197' AND `Tracker`.`lastclick` < '1288356997' GROUP BY modUser.id ORDER BY duration DESC LIMIT 10
$c->innerJoin('modUserProfile','Profile');
$c->innerJoin('modUserGroupMember','UserGroupMembers');
$c->innerJoin('modUserGroup','UserGroup','`UserGroupMembers`.`user_group` = `UserGroup`.`id`');
$c->leftJoin('sesTracker','Tracker','modUser.id = Tracker.user');
$modx->setLogTarget('ECHO');var_dump($c->toSql());