select * from myQuery Order by Total desc for(i=1; i lte arrayLen(variables.clientdata);i=i+1){ if(variables.clientdata[i].clientid is arguments.clientid) ret=variables.clientdata[i]; } for(n=1; n lte arrayLen(arguments.theData); n=n+1){ if(not arrayLen(arrayOut)){ tmp=structNew(); tmp.data=arguments.theData[n][sorton]; tmp.total=1; result=arrayAppend(arrayOut,tmp); } else { isInStruct=0; for(m=1; m lte arrayLen(arrayOut); m=m+1){ if(arrayOut[m].data is arguments.theData[n][sorton]) isInStruct=m; } if(isInStruct){ arrayOut[isInStruct].total=arrayOut[isInStruct].total+1; } else { tmp=structNew(); tmp.data=arguments.theData[n][sortOn]; tmp.total=1; result=arrayAppend(arrayOut,tmp); } } } // Are we tracking the client already? for(i=1; i lte arrayLen(variables.clientData); i=i+1){ if(variables.clientData[i].clientid is arguments.requestData.clientid) updateFlag=i; } if(updateFlag is 0){ result=arrayAppend(variables.clientData,arguments.requestData); } else { for(j in arguments.requestData){ variables.clientData[updateFlag][j]=arguments.requestData[j]; } } // Trim the array for data older than 24 hours for(j=arrayLen(variables.clientData); j gt 0; j=j-1){ if(dateDiff("n",variables.clientData[j].LastUpdated,Now()) gte 1440) arrayDeleteAt(variables.clientData,j); } for(i=arrayLen(variables.clientData); i gt 0; i=i-1){ if(variables.clientdata[i].IP is arguments.thisIP) arrayDeleteAt(variables.clientdata,i); }