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);