# Postgres abs() function

Calculate the absolute value of a number

The Postgres `abs()`

function is used to compute the absolute value of a number. The absolute value is the non-negative value of a number without regard to its sign.

It's useful in multiple scenarios when working with numbers, such as calculating distances, comparing magnitudes regardless of direction, or ensuring non-negative values in financial calculations.

## Function signature

The `abs()`

function has a simple form:

`number`

: The input value for which you want to calculate the absolute value. It can be of any numeric data type - integer, floating-point, or decimal.

## Example usage

Consider a table `transactions`

with an `amount`

column that contains both positive (deposits) and negative (withdrawals) values. We can use `abs()`

to order the transactions by their magnitude.

This query retrieves the transaction IDs and amounts, ordering them by the absolute value of the amount, in descending order.

## Other examples

### Using abs() for distance calculations

The `abs()`

function is also frequently used for distance calculations, where the direction is not relevant. Suppose we have a table of geographical coordinates and we want to find points within a certain range of a reference point.

This query finds all points within 0.05 degrees (approximately 5.5 km) of the reference point (40.7300, -73.9950) in both latitude and longitude.

### Combining abs() with other functions

We can combine `abs()`

with other functions for more complex calculations. For example, to measure the percentage discrepancy between forecasted and actual sales, we can use `abs()`

to calculate the size of the difference and then divide it by the forecasted value.

This query orders the products by the percentage difference between the forecasted and actual sales.

## Additional considerations

### Performance implications

The `abs()`

function is pretty quick, as it's a simple mathematical operation. However, if you frequently filter or join a large dataset based on absolute values, consider creating a functional index using `abs()`

to speed up queries.

### Alternative functions and operators

- The
`@`

operator: Postgres provides the`@`

operator as an alternative to the`abs()`

function. It performs the same operation (calculating the absolute value) and can be used interchangeably with`abs()`

. For example,`@ -5`

is equivalent to`abs(-5)`

.