Aggregate Functions
This section describes aggregate functions, including their syntax, parameters, and usage examples.
Function List
| Function | Description |
|---|---|
| Estimates the number of unique values in x. | |
| Sorts the values of x in ascending order and returns the value at a specified percentile position (percentage). | |
| Returns a random non-null value in x. | |
| Queries the x value for the maximum y value or the x values for n maximum y values. | |
| Queries the x value for the minimum y value or the x values for n minimum y values. | |
| Used for counting. | |
| Queries the maximum value in x. | |
| Queries the minimum value in x. | |
| Calculates the arithmetic average value of x. |
approx_distinct
This function estimates the number of unique values in x.
- Estimates the number of unique values in x. By default, the standard error is 2.3%.
Syntax: approx_distinct(x)
- Estimates the number of unique values in x. You can customize the standard error.
Syntax: approx_distinct(x, e)
| Parameter | Description | Type | Mandatory |
|---|---|---|---|
| x | Original field. | Any | Yes |
| e | Custom standard error. | Double; value range: [0.0115, 0.26] | No |
Return value type: bigint
- Example 1: Use the approx_distinct function to count the unique values of the clientIp field, with the standard error of 2.3%.
Table 3 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT approx_distinct(clientIp)
1
- Example 2: Use the approx_distinct function to count the unique values of the clientIp field, with the custom standard error of 10%.
Table 4 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT approx_distinct(clientIp, 0.1)
1
approx_percentile
This function sorts the values of x in ascending order and returns the value at a specified percentile position (percentage).
- Sorts x in ascending order and returns the value of x at the specified percentile position (percentage) as a double.
Syntax: approx_percentile(x, percentage)
- Sorts x in ascending order and returns the values of x at the specified percentile positions (percentage01 and percentage02), with the result presented as array(double,double).
Syntax: approx_percentile(x, array[percentage01, percentage02)]
- Computes the product of each element in x with the corresponding weight, sorts these products in ascending order, and returns the value of x at the specified percentile position (percentage) as a double.
Syntax: approx_percentile(x, weight, percentage)
- Computes the product of each element in x with the corresponding weight, sorts the products in ascending order, and returns the values of x at the specified percentile positions (percentage01 and percentage02), with the result presented as array(double,double).
Syntax: approx_percentile(x, weight, array[percentage01, percentage02...])
- Computes the product of each element in x with the corresponding weight, sorts these products in ascending order, and returns the value of x at the specified percentile position (percentage) as a double. The accuracy of the returned result can be set.
Syntax: approx_percentile(x, weight, percentage, accuracy)
| Parameter | Description | Type | Mandatory |
|---|---|---|---|
| x | Original field. | Double | Yes |
| percentage | Percentage. The value range is [0, 1]. | Double | Yes |
| weight | Weight, which is an integer greater than 1. When the weight is applied, the system sorts the products of x and the weight. | Integer | No |
| accuracy | Accuracy. The value range is (0, 1). | Double | No |
Return value type: double or array(double,...,double)
- Example 1: Sort the request_time column and return the value of the request_time field that is approximately at the 50% position.
Table 6 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT approx_percentile(request_time, 0.5)
45.0
- Example 2: Sort the request_time column and return the values of the request_time field that are at the 10%, 20%, and 70% positions.
Table 7 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT approx_percentile(request_time,array[0.1,0.2,0.7])
[17.0, 24.0, 59.0]
- Example 3: Sort the request_time column based on the product of request_time and weight, and return the value of the request_time field that is approximately at the 50% position. The weight is 60.
Table 8 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT approx_percentile(request_time, 60, 0.5)
45.0
- Example 4: Sort the request_time column based on the product of request_time and weight, and return the values of the request_time field that are approximately at the 80% and 90% positions. The weight is 60.
Table 9 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT approx_percentile(request_time, 60, array[0.8, 0.9])
[66.0,73.0]
- Example 5: Sort the request_time column based on the product of request_time and weight, and return the value of the request_time field that is approximately at the 50% position. The weight is 60 and the accuracy is 0.2.
Table 10 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT approx_percentile(request_time, 60, 0.5, 0.2)
45.0
arbitrary
This function returns a random non-null value in x.
Syntax: arbitrary(x)
| Parameter | Description | Type | Mandatory |
|---|---|---|---|
| x | Original field. | Any | Yes |
Return value type: same as the data type of the parameter value
Example: select arbitrary(region)
| Type | Query Statement | Returned Result |
|---|---|---|
| Scenario | arbitrary(region) | r2 |
max_by
This function queries the x value for the maximum y value or the x values for n maximum y values.
- Queries the x value corresponding to the maximum y value.
Syntax: max_by(x, y)
- Queries the x values corresponding to the top n maximum y values.
Syntax: max_by(x, y, n)
| Parameter | Description | Type | Mandatory |
|---|---|---|---|
| x | Original field. | Any data type | Yes |
| y | Original field. | Any data type | Yes |
| n | A positive integer. | Integer | No |
Return value type: same as the data type of the parameter value
- Example 1: Return the request method for the longest request.
Table 14 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT max_by(request_method, request_time)
GET
- Example 2: Return the request methods for the top 3 longest requests.
Table 15 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT max_by(request_method, request_time, 3)
["GET","GET","GET"]
min_by
This function queries the x value for the minimum y value or the x values for n minimum y values.
- Queries the x value corresponding to the minimum y value.
Syntax: min_by(x, y)
- Queries the x values corresponding to the top n minimum y values.
Syntax: min_by(x, y, n)
| Parameter | Description | Type | Mandatory |
|---|---|---|---|
| x | Original field. | Any data type | Yes |
| y | Original field. | Any data type | Yes |
| n | A positive integer. | Integer | No |
Return value type: same as the data type of the parameter value
- Example 1: Return the request method for the fastest request.
Table 17 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT min_by(request_method, request_time)
POST
- Example 2: Return the request methods for the top 3 fastest requests.
Table 18 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT min_by(request_method, request_time, 3)
["POST","POST","POST"]
count
This function is used for counting.
- Counts all log events.
- Counts all log events. It is equivalent to count(*).
- Counts the number of log events whose values are not NULL in x.
Syntax: COUNT(x)
| Parameter | Description | Type | Mandatory |
|---|---|---|---|
| x | Original field. | Any | Yes |
Return value type: Int
Example: select COUNT(*)
| Type | Query Statement | Returned Result |
|---|---|---|
| Scenario | COUNT(*) | 1 |
max
This function queries the maximum value in x.
- Queries the maximum value in x.
Syntax: max(x)
- Queries the n maximum values in x and returns them as an array.
Syntax: max(x, n)
| Parameter | Description | Type | Mandatory |
|---|---|---|---|
| x | Original field. | Any data | Yes |
| n | Number of maximum values to return. | Positive integer | No |
Return value type: same as the data type of the parameter value
- Example 1: Query the maximum value in x.
Table 22 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT max(x)
99.0
- Example 2: Query the two maximum values in x.
Table 23 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT max(x, 2)
[99.0, 99.0]
min
This function queries the minimum value in x.
- Queries the minimum value in x.
Syntax: min(x)
- Queries the n minimum values in x and returns them as an array.
Syntax: min(x, n)
| Parameter | Description | Type | Mandatory |
|---|---|---|---|
| x | Original field. | Any data | Yes |
| n | Number of minimum values to return. | Positive integer | No |
Return value type: same as the data type of the parameter value
- Example 1: Query the minimum value in x.
Table 25 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT min(x)
10.0
- Example 2: Query the two minimum values in x.
Table 26 Query and analysis results Type
Query Statement
Returned Result
Scenario
SELECT min(x, 2)
[10.0, 10.0]
avg
This function calculates the arithmetic average value of x.
Syntax: AVG(x)
| Parameter | Description | Type | Mandatory |
|---|---|---|---|
| x | Original field. | number | Yes |
Return value type: double
Example: select AVG(value)
| Type | Query Statement | Returned Result |
|---|---|---|
| Scenario | AVG(value) | 1 |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.