public async Task <IEnumerable <GraphStatDto> > Get(decimal period, Filters filters) { var httpStatusWhere = _requestResultRepository.CreateWhereClause(filters, out var sqlParams); var sql = $@" SELECT Minute, COUNT(Id) as Requests, COUNT(DISTINCT UserNumber) as Users, AVG(ElapsedMilliseconds) as Avg, MIN(ElapsedMilliseconds) as Min, MAX(ElapsedMilliseconds) as Max, SUM(ElapsedMilliseconds * ElapsedMilliseconds) / COUNT(Id) - AVG(ElapsedMilliseconds) * AVG(ElapsedMilliseconds) AS Variance FROM ( SELECT *, CAST(RequestStartedMs / {period} as int64) as Minute, UserNumber FROM HttpStatusResult INNER JOIN Iteration ON Iteration.Id = HttpStatusResult.IterationId {httpStatusWhere} ) t group by t.Minute order by Minute "; var result = await _connection.QueryAsync <GraphStatDto>(sql, sqlParams); return(result); }
private string CreateWhereClause(Filters filters, out IDictionary <string, object> sqlParams) { var httpStatusWhere = _requestResultRepository.CreateWhereClause(filters, out sqlParams); var hasFilterValue = !string.IsNullOrWhiteSpace(filters.Test); if (!hasFilterValue) { return(httpStatusWhere); } sqlParams.Add("testName", filters.Test); return((string.IsNullOrWhiteSpace(httpStatusWhere) ? "WHERE " : httpStatusWhere + " AND ") + "TestName = @testName"); }