Skip to content

Basic Arithmetic

GlueSQL provides a number of basic arithmetic operations such as absolute value (abs), division (divide), modulo (modulo), greatest common divisor (gcd), and least common multiple (lcm).

For this tutorial, we assume there's a table named Number with columns id and number.

Absolute Value - ABS

The abs function returns the absolute value of a number.

let actual = values(vec!["0, 0", "1, -3", "2, 4", "3, -29"])
    .alias_as("number")
    .select()
    .project("column1")
    .project(abs("column2"))  // Takes the absolute value of column2
    .project(col("column2").abs())  // Takes the absolute value of column2
    .execute(glue)
    .await;

Division - DIV

The divide function divides one number by another.

let actual = table("Number")
    .select()
    .project("id")
    .project(divide("number", 3))  // Divides the number by 3
    .project(divide(col("number"), 3))  // Divides the number by 3
    .execute(glue)
    .await;

Modulo - MOD

The modulo function returns the remainder of one number divided by another.

let actual = table("Number")
    .select()
    .project("id")
    .project(modulo("number", 4))  // Gets the remainder of number divided by 4
    .project(modulo(col("number"), 4))  // Gets the remainder of number divided by 4
    .execute(glue)
    .await;

Greatest Common Divisor - GCD

The gcd function returns the greatest common divisor of two numbers.

let actual = table("Number")
    .select()
    .project("id")
    .project(gcd("number", 12))  // Gets the GCD of number and 12
    .project(gcd(col("number"), 12))  // Gets the GCD of number and 12
    .execute(glue)
    .await;

Least Common Multiple - LCM

The lcm function returns the least common multiple of two numbers.

let actual = table("Number")
    .select()
    .project("id")
    .project(lcm("number", 3))  // Gets the LCM of number and 3
    .project(lcm(col("number"), 3))  // Gets the LCM of number and 3
    .execute(glue)
    .await;