Bird
Raised Fist0
PostgreSQLquery~5 mins

Mathematical functions (ROUND, CEIL, FLOOR, ABS) in PostgreSQL - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Mathematical functions (ROUND, CEIL, FLOOR, ABS)
O(n)
Understanding Time Complexity

We want to understand how the time it takes to run mathematical functions changes as we use them on more data.

How does the work grow when applying functions like ROUND, CEIL, FLOOR, or ABS to many numbers?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


SELECT 
  ROUND(price, 2) AS rounded_price,
  CEILING(discount) AS ceil_discount,
  FLOOR(tax) AS floor_tax,
  ABS(balance) AS absolute_balance
FROM sales_data;
    

This code applies four mathematical functions to each row in the sales_data table.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Applying each mathematical function to every row in the table.
  • How many times: Once per row, repeated for all rows in sales_data.
How Execution Grows With Input

Each row requires a fixed amount of work to compute these functions.

Input Size (n)Approx. Operations
1040 (4 functions x 10 rows)
100400 (4 functions x 100 rows)
10004000 (4 functions x 1000 rows)

Pattern observation: The total work grows directly with the number of rows.

Final Time Complexity

Time Complexity: O(n)

This means the time to run these functions grows in a straight line as the number of rows increases.

Common Mistake

[X] Wrong: "Mathematical functions like ROUND or ABS take longer as the numbers get bigger."

[OK] Correct: These functions do a fixed amount of work per number regardless of its size, so the time depends only on how many numbers you process, not their values.

Interview Connect

Understanding how simple functions scale with data size helps you explain query performance clearly and confidently.

Self-Check

"What if we applied these functions inside a nested query that runs multiple times? How would the time complexity change?"

Practice

(1/5)
1. What does the ABS function do in PostgreSQL?
easy
A. Rounds a number to the nearest integer
B. Finds the largest integer less than or equal to a number
C. Finds the smallest integer greater than or equal to a number
D. Returns the positive value of a number

Solution

  1. Step 1: Understand the ABS function

    The ABS function returns the absolute value, which means it converts any number to its positive form.
  2. Step 2: Compare with other functions

    ROUND changes decimals, CEIL and FLOOR deal with integers, so they do not return absolute values.
  3. Final Answer:

    Returns the positive value of a number -> Option D
  4. Quick Check:

    ABS(-5) = 5 [OK]
Hint: ABS always returns a positive number or zero [OK]
Common Mistakes:
  • Confusing ABS with ROUND
  • Thinking ABS changes decimal places
  • Mixing ABS with CEIL or FLOOR
2. Which of the following is the correct syntax to round the number 3.14159 to 2 decimal places in PostgreSQL?
easy
A. ROUND(3.14159, 2)
B. ROUND(3.14159.2)
C. ROUND(3.14159 TO 2)
D. ROUND(3.14159, '2')

Solution

  1. Step 1: Recall ROUND function syntax

    ROUND takes two arguments: the number and the number of decimal places as an integer.
  2. Step 2: Check each option

    ROUND(3.14159, 2) uses correct syntax ROUND(number, decimals). Others have syntax errors or wrong argument types.
  3. Final Answer:

    ROUND(3.14159, 2) -> Option A
  4. Quick Check:

    ROUND(3.14159, 2) = 3.14 [OK]
Hint: ROUND(number, decimals) uses comma and integer decimals [OK]
Common Mistakes:
  • Using dot instead of comma between arguments
  • Passing decimals as string
  • Using 'TO' keyword incorrectly
3. What is the result of this PostgreSQL query?
SELECT CEIL(-3.7), FLOOR(-3.7), ROUND(-3.7), ABS(-3.7);
medium
A. (-3, -4, -3, 3.7)
B. (-4, -3, -4, 3.7)
C. (-3, -4, -4, 3.7)
D. (-3, -4, -4, -3.7)

Solution

  1. Step 1: Calculate CEIL and FLOOR for -3.7

    CEIL(-3.7) is the smallest integer >= -3.7, which is -3. FLOOR(-3.7) is the largest integer <= -3.7, which is -4.
  2. Step 2: Calculate ROUND and ABS

    ROUND(-3.7) rounds to nearest integer, which is -4. ABS(-3.7) returns positive value 3.7.
  3. Final Answer:

    (-3, -4, -4, 3.7) -> Option C
  4. Quick Check:

    CEIL(-3.7) = -3, FLOOR(-3.7) = -4, ROUND(-3.7) = -4, ABS(-3.7) = 3.7 [OK]
Hint: CEIL rounds up, FLOOR rounds down, ABS makes positive [OK]
Common Mistakes:
  • Mixing CEIL and FLOOR results for negative numbers
  • Assuming ROUND always truncates
  • Forgetting ABS returns positive
4. Identify the error in this PostgreSQL query:
SELECT ROUND(5.678, '1');
medium
A. ROUND requires only one argument
B. The second argument should be an integer, not a string
C. Missing FROM clause in the query
D. ROUND cannot be used with decimal numbers

Solution

  1. Step 1: Check ROUND function arguments

    ROUND expects the second argument to be an integer specifying decimal places, not a string.
  2. Step 2: Validate other options

    ROUND works with decimals, FROM clause is optional in SELECT without tables, and ROUND can take two arguments.
  3. Final Answer:

    The second argument should be an integer, not a string -> Option B
  4. Quick Check:

    ROUND(5.678, 1) is correct, ROUND(5.678, '1') causes error [OK]
Hint: Use integer for decimals, not quoted strings [OK]
Common Mistakes:
  • Passing decimals as quoted strings
  • Thinking FROM is mandatory for simple SELECT
  • Assuming ROUND only takes one argument
5. You want to calculate the total price after applying a 7.5% tax on a price of 123.4567 and round the result to 2 decimal places. Which PostgreSQL expression correctly does this?
hard
A. ROUND(123.4567 * 1.075, 2)
B. CEIL(123.4567 * 1.075, 2)
C. FLOOR(123.4567 * 1.075, 2)
D. ABS(123.4567 * 1.075, 2)

Solution

  1. Step 1: Calculate price with tax

    Multiply price by 1.075 (100% + 7.5%) to get total price including tax.
  2. Step 2: Round to 2 decimal places

    Use ROUND function with second argument 2 to round to two decimals.
  3. Step 3: Check other functions

    CEIL and FLOOR do not accept decimals argument, ABS is for absolute value, so they are incorrect here.
  4. Final Answer:

    ROUND(123.4567 * 1.075, 2) -> Option A
  5. Quick Check:

    ROUND(123.4567 * 1.075, 2) = 132.72 [OK]
Hint: Use ROUND for decimals, CEIL/FLOOR only for integers [OK]
Common Mistakes:
  • Using CEIL or FLOOR with decimal places argument
  • Using ABS instead of ROUND for rounding
  • Forgetting to multiply by 1.075 for tax
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard