# Funciones soportadas por InfluxQL

### Funciones de agregación (en el SELECT) soportadas por InfluxQL <a href="#funciones-de-agregacin-soportadas-por-influxql" id="funciones-de-agregacin-soportadas-por-influxql"></a>

InfluxQL ofrece varias funciones de agregación para analizar y resumir datos de series temporales. Las principales funciones de agregación disponibles son:

* **COUNT()**: Cuenta el número de valores no nulos de un campo.
* **DISTINCT()**: Devuelve la lista de valores únicos de un campo.
* **INTEGRAL()**: Calcula el área bajo la curva de los valores de un campo.
* **MEAN()**: Calcula el promedio aritmético de los valores de un campo.
* **MEDIAN()**: Calcula la mediana de los valores de un campo.
* **MODE()**: Devuelve el valor más frecuente en un campo.
* **SPREAD()**: Diferencia entre el valor máximo y el mínimo de un campo.
* **STDDEV()**: Desviación estándar de los valores de un campo.
* **SUM()**: Suma los valores de un campo.
* **BOTTOM()**: Devuelve los valores más bajos de un campo dentro de cada grupo.
* **FIRST()**: Valor del campo con el timestamp más antiguo en el rango consultado.
* **LAST()**: Valor del campo con el timestamp más reciente en el rango consultado.
* **MAX()**: Valor máximo de un campo.
* **MIN()**: Valor mínimo de un campo.
* **TOP()**: Devuelve los valores más altos de un campo dentro de cada grupo.

Estas funciones permiten realizar análisis estadísticos, acumulados, tendencias y resúmenes sobre datos de series temporales.

### Funciones de fechas (en el WHERE y GROUP BY) soportadas por InfluxQL <a href="#funciones-de-fechas-soportadas-por-influxql" id="funciones-de-fechas-soportadas-por-influxql"></a>

InfluxQL incluye funciones de fechas y tiempo que permiten trabajar con los timestamps de las series temporales. Las funciones principales son:

* **now()**: Devuelve la hora actual del sistema en UTC. Solo se puede usar en la cláusula WHERE.
* **time()**: Se utiliza en la cláusula GROUP BY para agrupar datos en intervalos de tiempo definidos (ventanas de tiempo). Permite hacer downsampling y normalizar datos a intervalos regulares.
* **tz()**: Aplica un desplazamiento de zona horaria a los timestamps en los resultados de la consulta (solo en la cláusula de zona horaria).

### Funciones de transformación (en el SELECT) soportadas por InfluxQL <a href="#funciones-de-transformacin-relevantes-en-influxql" id="funciones-de-transformacin-relevantes-en-influxql"></a>

* **DIFFERENCE()**: Calcula la diferencia aritmética entre valores consecutivos de un campo, mostrando cuánto cambia el valor de un punto al siguiente.
* **DERIVATIVE()**: Calcula la tasa de cambio (derivada) entre puntos consecutivos, considerando el tiempo entre ellos.
* **ELAPSED()**: Calcula la diferencia de tiempo (en la unidad especificada) entre puntos consecutivos.
* **CUMULATIVE\_SUM()**: Devuelve la suma acumulada de los valores de un campo a lo largo del tiempo.
* **MOVING\_AVERAGE()**: Calcula el promedio móvil de los valores de un campo sobre una ventana de puntos definida.
* **NON\_NEGATIVE\_DERIVATIVE()**: Igual que DERIVATIVE(), pero solo devuelve resultados si la tasa de cambio es positiva o cero.
* **NON\_NEGATIVE\_DIFFERENCE()**: Igual que DIFFERENCE(), pero solo devuelve resultados si la diferencia es positiva o cero.

### Resumen <a href="#resumen" id="resumen"></a>

| Tipo de función | Funciones principales soportadas en InfluxQL                                                                            |
| --------------- | ----------------------------------------------------------------------------------------------------------------------- |
| Agregación      | COUNT, DISTINCT, INTEGRAL, MEAN, MEDIAN, MODE, SPREAD, STDDEV, SUM, BOTTOM, FIRST, LAST, MAX, MIN, TOP                  |
| Transformación  | DIFFERENCE, DERIVATIVE, ELAPSED, CUMULATIVE\_SUM, MOVING\_AVERAGE, NON\_NEGATIVE\_DERIVATIVE, NON\_NEGATIVE\_DIFFERENCE |
| Fecha           | now(), time(), tz()                                                                                                     |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://darioaplicano.gitbook.io/influxdb2.x/sesion-2/guion-de-la-sesion/documentacion/lenguaje-de-consultas-en-influxdb/influxql/funciones-soportadas-por-influxql.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
