public virtual async Task Functions_CountDistinct() { using (var tempTable = await DataTestHelpers.CreateAutoIncrementTable(DataProvider)) { await DataProvider.ExecuteNonQueryAsync(QueryExpression.Insert( tempTable.TableName, new[] { "Data" }, new object[] { 10 }, new object[] { 10 }, new object[] { 15 }, new object[] { 20 } )); using (var queryResult = await DataProvider.ExecuteReaderAsync( QueryExpression.Select( new[] { QueryExpression.CountFunction( QueryExpression.Distinct(QueryExpression.Column("Data")) ) }, from: QueryExpression.Table(tempTable.TableName) ))) { Assert.IsTrue(queryResult.HasRows); Assert.IsTrue(await queryResult.ReadAsync()); Assert.AreEqual(3, queryResult.GetInt32(0)); } } }
public ExpressionResult Convert(MethodInfo methodInfo, MethodCallExpression node, ExpressionConverter expressionConverter) { var expressionResult = expressionConverter.Convert(node.Arguments[0]); var countExpression = expressionResult.QueryExpression; if (countExpression is TableExpression) { countExpression = QueryExpression.All(); } return(new ExpressionResult( QueryExpression.CountFunction(countExpression), expressionResult.RequiredJoins )); }
public virtual async Task Functions_Count() { // some database engines require the subquery to be aliased using (var tempTable = await Select_CreatePopulatedSelectTable()) { using (var queryResult = await DataProvider.ExecuteReaderAsync( QueryExpression.Select( new[] { QueryExpression.CountFunction(QueryExpression.All()) }, from: QueryExpression.Table(tempTable.TableName) ))) { Assert.IsTrue(queryResult.HasRows); Assert.IsTrue(queryResult.Read()); Assert.AreEqual(6, queryResult.GetInt32(0)); } } }