pub fn avg<ST: Foldable, expr>(
expr: expr,
) -> avg<ST, <expr as AsExpression<ST>>::Expression>where
expr: AsExpression<ST>,Expand description
Represents a SQL AVG function. This function can only take types which are
Foldable.
§Window Function Usage
This function can be used as window function. See WindowExpressionMethods for details
§Aggregate Function Expression
This function can be used as aggregate expression. See AggregateExpressionMethods for details.
§Examples
§Normal function usage
diesel::insert_into(numbers)
.values(&vec![number.eq(1), number.eq(2)])
.execute(conn)?;
let average = numbers.select(avg(number)).get_result(conn)?;
let expected = "1.5".parse::<BigDecimal>().unwrap();
assert_eq!(Some(expected), average);§Window function
fn run_test() -> QueryResult<()> {
let res = animals.select((name, avg(legs).partition_by(id))).load::<(Option<String>, Option<BigDecimal>)>(connection)?;
assert_eq!(vec![
(Some("Jack".into()), "4".parse::<BigDecimal>().ok()),
(None, "8".parse::<BigDecimal>().ok()),
], res);§Aggregate function expression
diesel::insert_into(numbers)
.values(&vec![number.eq(1), number.eq(2), number.eq(3)])
.execute(conn)?;
let average = numbers.select(avg(number).aggregate_filter(number.lt(3))).get_result(conn)?;
let expected = "1.5".parse::<BigDecimal>().unwrap();
assert_eq!(Some(expected), average);