Disponible para:

Log Workspaces | Editor DDSQL

Información general

SQL en Celdas de análisis permite analizar y manipular datos. Esta documentación aborda la compatibilidad de SQL disponible e incluye:

Celda de Workspace de ejemplo con sintaxis de SQL

Sintaxis

Se admite la siguiente sintaxis de SQL:

SintaxisDescripciónEjemplo
SELECT (DISTINCT)
DISTINCT: opcional
Recupera filas de una base de datos, con DISTINCT filtrando los registros duplicados.
SELECT DISTINCT customer_id
FROM orders 
JOINCombines rows from two or more tables based on a related column between them. Supports FULL JOIN, INNER JOIN, LEFT JOIN, RIGHT JOIN.
SELECT orders.order_id, customers.customer_name
FROM orders
JOIN customers
ON orders.customer_id = customers.customer_id 
GROUP BYGroups rows that have the same values in specified columns into summary rows.
SELECT product_id, SUM(quantity)
FROM sales
GROUP BY product_id 
|| (concat)Concatenates two or more strings together.
SELECT first_name || ' ' || last_name AS full_name
FROM employees 
WHERE
Includes support for LIKE, IN, ON, OR filters.
Filters records that meet a specified condition.
SELECT *
FROM employees
WHERE department = 'Sales' AND name LIKE 'J%' 
CASEProvides conditional logic to return different values based on specified conditions.
SELECT order_id,
  CASE
    WHEN quantity > 10 THEN 'Bulk Order'
    ELSE 'Standard Order'
  END AS order_type
FROM orders 
WINDOWPerforms a calculation across a set of table rows that are related to the current row.
SELECT
  timestamp,
  service_name,
  cpu_usage_percent,
  AVG(cpu_usage_percent) OVER (PARTITION BY service_name ORDER BY timestamp ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_avg_cpu
FROM
  cpu_usage_data 
IS NULL / IS NOT NULLChecks if a value is null or not null.
SELECT *
FROM orders
WHERE delivery_date IS NULL 
LIMITSpecifies the maximum number of records to return.
SELECT *
FROM customers
LIMIT 10 
ORDER BYSorts the result set of a query by one or more columns. Includes ASC, DESC for sorting order.
SELECT *
FROM sales
ORDER BY sale_date DESC 
HAVINGFilters records that meet a specified condition after grouping.
SELECT product_id, SUM(quantity)
FROM sales
GROUP BY product_id
HAVING SUM(quantity) > 10 
IN, ON, ORUsed for specified conditions in queries. Available in WHERE, JOIN clauses.
SELECT *
FROM orders
WHERE order_status IN ('Shipped', 'Pending') 
ASRenames a column or table with an alias.
SELECT first_name AS name
FROM employees 
Arithmetic OperationsPerforms basic calculations using operators like +, -, *, /.
SELECT price, tax, (price * tax) AS total_cost
FROM products 
INTERVAL value unitintervalRepresents a time duration specified in a given unit. Supported units:
- milliseconds / millisecond
- seconds / second
- minutes / minute
- hours / hour
- days / day

Funciones

Se admiten las siguientes funciones de SQL. Para la función de ventana, consulta la sección función de ventana de esta documentación.

FunciónTipo de retornoDescripción
MIN(variable v)Variable typeofDevuelve el valor más pequeño de un conjunto de datos.
MAX(variable v)Variable typeofDevuelve el valor máximo de todos los valores de entrada.
COUNT(any a)numéricoDevuelve el número de valores de entrada que no son nulos.
SUM(numeric n)numéricoDevuelve la suma de todos los valores de entrada.
AVG(numeric n)numéricoDevuelve el valor medio (media aritmética) de todos los valores de entrada.
CEIL(numeric n)numéricoDevuelve el valor redondeado al entero más próximo.
FLOOR(numeric n)numéricoDevuelve el valor redondeado al entero más próximo.
ROUND(numeric n)numéricoDevuelve el valor redondeado al entero más próximo.
LOWER(string s)cadenaDevuelve la cadena en minúsculas.
UPPER(string s)cadenaDevuelve la cadena en mayúsculas.
ABS(numeric n)numéricoDevuelve el valor absoluto.
COALESCE(args a)typeof first non-null a OR nullDevuelve el primer valor no nulo o nulo si todos son nulos.
CAST(value AS type)tipoConvierte el valor dado al tipo de datos especificado.
LENGTH(string s)enteroDevuelve el número de caracteres de la cadena.
TRIM(string s)cadenaElimina los espacios en blanco iniciales y finales de la cadena.
REPLACE(string s, string from, string to)cadenaSustituye las apariciones de una subcadena dentro de una cadena por otra subcadena.
SUBSTRING(string s, int start, int length)cadenaExtrae una subcadena de una cadena, comenzando en una posición dada y para una longitud especificada.
STRPOS(string s, string substring)enteroDevuelve la primera posición del índice de la subcadena en una cadena dada, o 0 si no hay coincidencia.
SPLIT_PART(string s, string delimiter, integer index)cadenaDivide la cadena en el delimitador dado y devuelve la cadena en la posición dada contando desde uno.
EXTRACT(unit from timestamp/interval)numéricoExtrae una parte de un campo de fecha u hora (como el año o el mes) de una marca temporal o intervalo.
TO_TIMESTAMP(string timestamp, string format)marca de tiempoConvierte una cadena en una marca de tiempo según el formato dado.
TO_CHAR(timestamp t, string format)cadenaConvierte una marca de tiempo en una cadena según el formato dado.
DATE_TRUNC(string unit, timestamp t)marca de tiempoTrunca una marca de tiempo a una precisión especificada basada en la unidad proporcionada.
REGEXP_LIKE(string s, pattern p)booleanoEvalúa si una cadena coincide con un patrón de expresión regular.
CARDINALITY(array a)enteroDevuelve el número de elementos de la matriz.
ARRAY_POSITION(array a, typeof_array value)enteroDevuelve el índice de la primera aparición del valor encontrado en la matriz, o null (nulo) si no se encuentra el valor.
STRING_TO_ARRAY(string s, string delimiter)matriz de cadenasDivide la cadena dada en una matriz de cadenas utilizando el delimitador dado.
ARRAY_AGG(expression e)matriz de tipo de entradaCrea una matriz al recopilar todos los valores de entrada.
UNNEST(array a [, array b...])filas de a [, b…]Expande matrices en un conjunto de filas. Esta forma sólo se permite en una cláusula FROM.

MIN

SELECT MIN(response_time) AS min_response_time
FROM logs
WHERE status_code = 200

MAX

SELECT MAX(response_time) AS max_response_time
FROM logs
WHERE status_code = 200

COUNT

SELECT COUNT(request_id) AS total_requests
FROM logs
WHERE status_code = 200 

SUM

SELECT SUM(bytes_transferred) AS total_bytes
FROM logs
GROUP BY service_name

AVG

SELECT AVG(response_time)
AS avg_response_time
FROM logs
WHERE status_code = 200
GROUP BY service_name

CEIL

SELECT CEIL(price) AS rounded_price
FROM products

FLOOR

SELECT FLOOR(price) AS floored_price
FROM products

ROUND

SELECT ROUND(price) AS rounded_price
FROM products

LOWER

SELECT LOWER(customer_name) AS lowercase_name
FROM customers

UPPER

SELECT UPPER(customer_name) AS uppercase_name
FROM customers

ABS

SELECT ABS(balance) AS absolute_balance
FROM accounts

COALESCE

SELECT COALESCE(phone_number, email) AS contact_info
FROM users

CAST

Tipos de objetivos de cast admitidos:

  • BIGINT
  • DECIMAL
  • TIMESTAMP
  • VARCHAR
SELECT
  CAST(order_id AS VARCHAR) AS order_id_string,
  'Order-' || CAST(order_id AS VARCHAR) AS order_label
FROM
  orders

LENGTH

SELECT
  customer_name,
  LENGTH(customer_name) AS name_length
FROM
  customers

INTERVAL

SELECT
  TIMESTAMP '2023-10-01 10:00:00' + INTERVAL '30 days' AS future_date,
  INTERVAL '1 MILLISECOND 2 SECONDS 3 MINUTES 4 HOURS 5 DAYS'

TRIM

SELECT
  TRIM(name) AS trimmed_name
FROM
  users

REPLACE

SELECT
  REPLACE(description, 'old', 'new') AS updated_description
FROM
  products

SUBSTRING

SELECT
  SUBSTRING(title, 1, 10) AS short_title
FROM
  books

STRPOS

SELECT
  STRPOS('foobar', 'bar')

SPLIT_PART

SELECT
  SPLIT_PART('aaa-bbb-ccc', '-', 2)

EXTRACT

Unidades de extracción compatibles:

LiteralTipo de entradaDescripción
daytimestamp / intervaldía del mes
dowtimestampdía de la semana 1 (lunes) a 7 (domingo)
doytimestampdía del año (1 - 366)
hourtimestamp / intervalhora del día (0 - 23)
minutetimestamp / intervalminuto de la hora (0 - 59)
secondtimestamp / intervalsegundo del minuto (0 - 59)
weektimestampsemana del año (1 - 53)
monthtimestampmes del año (1 - 12)
quartertimestamptrimestre del año (1 - 4)
yeartimestampaño
timezone_hourtimestamphora del inicio del huso horario
timezone_minutetimestampminuto del inicio del huso horario
SELECT
  EXTRACT(year FROM purchase_date) AS purchase_year
FROM
  sales

TO_TIMESTAMP

Patrones compatibles para el formato fecha/hora:

PatrónDescripción
YYYYaño (4 dígitos)
YYaño (2 dígitos)
MMnúmero de mes (01 - 12)
DDdía del mes (01 - 31)
HH24hora del día (00 - 23)
HH12hora del día (01 - 12)
HHhora del día (01 - 12)
MIminuto (00 - 59)
SSsegundo (00 - 59)
MSmilisegundo (000 - 999)
TZabreviatura del huso horario
OFinicio del huso horario desde UTC
AM / amindicador del meridiano (sin puntos)
PM / pmindicador del meridiano (sin puntos)
SELECT
  TO_TIMESTAMP('25/12/2025 04:23 pm', 'DD/MM/YYYY HH:MI am') AS ts

TO_CHAR

Patrones compatibles para el formato fecha/hora:

PatrónDescripción
YYYYaño (4 dígitos)
YYaño (2 dígitos)
MMnúmero de mes (01 - 12)
DDdía del mes (01 - 31)
HH24hora del día (00 - 23)
HH12hora del día (01 - 12)
HHhora del día (01 - 12)
MIminuto (00 - 59)
SSsegundo (00 - 59)
MSmilisegundo (000 - 999)
TZabreviatura del huso horario
OFinicio del huso horario desde UTC
AM / amindicador del meridiano (sin puntos)
PM / pmindicador del meridiano (sin puntos)
SELECT
  TO_CHAR(order_date, 'MM-DD-YYYY') AS formatted_date
FROM
  orders

DATE_TRUNC

Truncamientos admitidos:

  • milliseconds
  • seconds / second
  • minutes / minute
  • hours / hour
  • days / day
  • weeks / week
  • months / month
  • quarters / quarter
  • years / year
SELECT
  DATE_TRUNC('month', event_time) AS month_start
FROM
  events

REGEXP_LIKE

SELECT
  *
FROM
  emails
WHERE
  REGEXP_LIKE(email_address, '@example\.com$')

CARDINALITY

SELECT
  CARDINALITY(recipients)
FROM
  emails

ARRAY_POSITION

SELECT
  ARRAY_POSITION(recipients, 'hello@example.com')
FROM
  emails

STRING_TO_ARRAY

SELECT
  STRING_TO_ARRAY('a,b,c,d,e,f', ',')

ARRAY_AGG

SELECT
  sender,
  ARRAY_AGG(subject) subjects,
  ARRAY_AGG(ALL subject) all_subjects,
  ARRAY_AGG(DISTINCT subject) distinct_subjects
FROM
  emails
GROUP BY
  sender

UNNEST

SELECT
  sender,
  recipient
FROM
  emails,
  UNNEST(recipients) AS recipient

Funciones de ventana

Esta tabla proporciona información general de las funciones de ventana compatibles. Para más detalles y ejemplos, consulta la Documentación de PostgreSQL.

FunciónTipo de retornoDescripción
OVERN/ADefine una ventana para un conjunto de filas sobre las que pueden operar otras funciones de ventana.
PARTITION BYN/ADivide el conjunto de resultados en particiones, específicamente para aplicar funciones de ventana.
RANK()enteroAsigna un rango a cada fila dentro de una partición, con espacios para los empates.
ROW_NUMBER()enteroAsigna un número secuencial único a cada fila dentro de una partición.
LEAD(column n)columna typeofDevuelve el valor de la siguiente fila de la partición.
LAG(column n)columna typeofDevuelve el valor de la fila anterior de la partición.
FIRST_VALUE(column n)columna typeofDevuelve el primer valor de un conjunto ordenado de valores.
LAST_VALUE(column n)columna typeofDevuelve el último valor de un conjunto ordenado de valores.
NTH_VALUE(column n, offset)columna typeofDevuelve el valor en el desplazamiento especificado en un conjunto ordenado de valores.

Etiquetas

DDSQL expone las etiquetas como un tipo hstore, que puedes consultar utilizando el operador de flecha de PostgreSQL. Por ejemplo:

SELECT instance_type, count(instance_type)
FROM aws.ec2_instance
WHERE tags->'region' = 'us-east-1' -- region is a tag, not a column
GROUP BY instance_type

Las etiquetas son pares clave-valor en los que cada clave puede tener cero, uno o varios valores. Cuando se accede a la etiqueta, el valor devuelve una cadena que contiene todos los valores correspondientes.

También puedes comparar valores de etiquetas como cadenas o conjuntos completos de etiquetas:

SELECT *
FROM k8s.daemonsets da INNER JOIN k8s.deployments de
ON da.tags = de.tags -- for a specific tag: da.tags->'app' = de.tags->'app'

Referencias adicionales

PREVIEWING: seth.samuel/mysql-iam