Cloud

log

The log() function returns the base-10 logarithm or logarithm of the specified base of a given number.

Syntax

This example illustrates the syntax of the log() function:

-- base-10 logarithm
LOG(number)

-- logarithm of number
LOG(base, number)

Where:

  • base: The base number. It must be greater than 0 and not equal to 1.

  • number: The number logarithm to obtain. It must be a positive number and greater than 0.

Examples

Base-10 logarithm

Basic usage

In this case, the log() function calculates the base-10 logarithm of a specified number.

SELECT LOG(2), LOG(2.5);

The query returns:

        log         |   log
--------------------+---------
 0.3010299956639812 | 0.39794

Negative value

In this example, the log() function is applied to negative numbers.

SELECT LOG(-1);

Any input of negative values returns a NaN result.

 log
-----
 NaN

NULL value

The log() function will return NULL if the argument is NULL.

SELECT LOG(NULL);

A null result is returned when an argument passed is null.

 log
-----

Zero value

In this example, the log() takes zero as an argument.

SELECT LOG(0);

The query returns:

    log
-----------
 -Infinity

Logarithm with custom base

Basic usage

In this case, the log() function calculates the logarithm of a specified number.

SELECT LOG(4, 16),
       LOG(0.7, 0.8),
       LOG(0.5, 10),
       LOG(1, NULL);

The query returns:

 log |    log     |    log    | log
-----+------------+-----------+-----
   2 | 0.62562156 | -3.321928 |

Use with a table

Consider a database table called data with the records:

CREATE TABLE data (
    data_column TEXT,
    x REAL,
    y REAL
);

INSERT INTO data (data_column, x, y) VALUES
('Data 1', 0.5, 2),
('Data 2', 1, 2),
('Data 3', 5, 2),
('Data 4', 10, 10),
('Data 5', 50, 10);

SELECT * FROM data;
 data_column |  x  | y
-------------+-----+----
 Data 1      | 0.5 |  2
 Data 2      |   1 |  2
 Data 3      |   5 |  2
 Data 4      |  10 | 10
 Data 5      |  50 | 10

Use the log() function to calculate the logarithm of column y (as a base) and column x (as a number):

SELECT *, LOG(y, x) AS LOG_Value FROM data;

The query returns:

 data_column |  x  | y  | log_value
-------------+-----+----+-----------
 Data 1      | 0.5 |  2 |        -1
 Data 2      |   1 |  2 |         0
 Data 3      |   5 |  2 |  2.321928
 Data 4      |  10 | 10 |         1
 Data 5      |  50 | 10 |   1.69897