What if you could fix messy numbers instantly with just one simple command?
Why Mathematical functions (ROUND, CEIL, FLOOR, ABS) in PostgreSQL? - Purpose & Use Cases
Imagine you have a big list of prices with many decimal places, and you need to show them neatly rounded to two decimals for your customers.
Or you want to find the smallest whole number greater than a measurement, or the absolute difference between two values.
Doing all these calculations by hand or with a calculator is slow and tiring.
It's easy to make mistakes, especially when you have hundreds or thousands of numbers.
Also, manually adjusting each number wastes a lot of time and energy.
Mathematical functions like ROUND, CEIL, FLOOR, and ABS in databases do these tasks instantly and correctly.
They let you clean up numbers, find ceilings or floors, and get absolute values with simple commands.
This saves time and avoids errors, making your data neat and ready to use.
price_rounded = round(price * 100) / 100 # done outside database
SELECT ROUND(price, 2) FROM products;It enables quick, accurate number adjustments directly in your data queries, making your reports and calculations reliable and easy.
A shop owner wants to display product prices rounded to two decimals, calculate shipping weights rounded up, and find the absolute difference between stock counts and sales.
Manual rounding and adjustments are slow and error-prone.
Mathematical functions automate these tasks inside the database.
This leads to faster, cleaner, and more reliable data handling.
Practice
ABS function do in PostgreSQL?Solution
Step 1: Understand the ABS function
The ABS function returns the absolute value, which means it converts any number to its positive form.Step 2: Compare with other functions
ROUND changes decimals, CEIL and FLOOR deal with integers, so they do not return absolute values.Final Answer:
Returns the positive value of a number -> Option DQuick Check:
ABS(-5) = 5 [OK]
- Confusing ABS with ROUND
- Thinking ABS changes decimal places
- Mixing ABS with CEIL or FLOOR
Solution
Step 1: Recall ROUND function syntax
ROUND takes two arguments: the number and the number of decimal places as an integer.Step 2: Check each option
ROUND(3.14159, 2) uses correct syntax ROUND(number, decimals). Others have syntax errors or wrong argument types.Final Answer:
ROUND(3.14159, 2) -> Option AQuick Check:
ROUND(3.14159, 2) = 3.14 [OK]
- Using dot instead of comma between arguments
- Passing decimals as string
- Using 'TO' keyword incorrectly
SELECT CEIL(-3.7), FLOOR(-3.7), ROUND(-3.7), ABS(-3.7);Solution
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.Step 2: Calculate ROUND and ABS
ROUND(-3.7) rounds to nearest integer, which is -4. ABS(-3.7) returns positive value 3.7.Final Answer:
(-3, -4, -4, 3.7) -> Option CQuick Check:
CEIL(-3.7) = -3, FLOOR(-3.7) = -4, ROUND(-3.7) = -4, ABS(-3.7) = 3.7 [OK]
- Mixing CEIL and FLOOR results for negative numbers
- Assuming ROUND always truncates
- Forgetting ABS returns positive
SELECT ROUND(5.678, '1');Solution
Step 1: Check ROUND function arguments
ROUND expects the second argument to be an integer specifying decimal places, not a string.Step 2: Validate other options
ROUND works with decimals, FROM clause is optional in SELECT without tables, and ROUND can take two arguments.Final Answer:
The second argument should be an integer, not a string -> Option BQuick Check:
ROUND(5.678, 1) is correct, ROUND(5.678, '1') causes error [OK]
- Passing decimals as quoted strings
- Thinking FROM is mandatory for simple SELECT
- Assuming ROUND only takes one argument
Solution
Step 1: Calculate price with tax
Multiply price by 1.075 (100% + 7.5%) to get total price including tax.Step 2: Round to 2 decimal places
Use ROUND function with second argument 2 to round to two decimals.Step 3: Check other functions
CEIL and FLOOR do not accept decimals argument, ABS is for absolute value, so they are incorrect here.Final Answer:
ROUND(123.4567 * 1.075, 2) -> Option AQuick Check:
ROUND(123.4567 * 1.075, 2) = 132.72 [OK]
- Using CEIL or FLOOR with decimal places argument
- Using ABS instead of ROUND for rounding
- Forgetting to multiply by 1.075 for tax
Ready to prove it?
Pass the test and this pattern moves unknown
