Esta página se tradujo del inglés con ayuda de IA. Si hay diferencias entre ambas, la versión en inglés es la referencia.
SELECT
Devuelve una o varias instancias de un recurso.
Consulte también:
[ Jerarquía de recursos de StackQL ] [WITH (CTE)] [Funciones de ventana]
Sintaxis
selectStatement::=
[ WITH [ RECURSIVE ] <cteName> [ ( <columnList> ) ] AS ( <selectStatement> ) [, ...] ]
SELECT { * | <fieldList> | <windowFunctionCall> [ AS <alias> ] }
FROM { <multipartIdentifier> | <joinStatement(s)> }
[ WHERE <expression> ]
[ GROUP BY <fieldList> ]
[ HAVING <expression> ]
[ WINDOW <windowName> AS ( <windowSpec> ) [, ...] ]
[ ORDER BY <fieldList> [ ASC | DESC ] ]
[ LIMIT <integer> ]
[ UNION <selectStatement> ];
Un JOIN sin cláusula ON se trata como un CROSS JOIN, por lo que la condición del join puede indicarse en la cláusula WHERE. Las versiones de StackQL anteriores a v0.12.732 no pueden planificar un JOIN sin condición.
Ejemplos
Instrucción SELECT básica
Ejecute una instrucción SELECT básica en una sesión autenticada.
-- Selecting all resources deployed within a service using a basic SELECT statement
SELECT * FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
Devolver campos específicos con una instrucción SELECT
Ejecute una instrucción SELECT con una lista de columnas para devolver campos específicos de una instancia de Compute Engine.
-- Selecting specified fields from a resource
SELECT id, name
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
Devolver un conjunto de resultados ordenado por una columna en orden ascendente con la cláusula ORDER BY
Ejecute una instrucción SELECT para devolver campos del recurso de buckets de Cloud Storage, ordenando los resultados en orden ascendente (los más antiguos primero).
-- Order a list of Cloud Storage buckets by creation time (in ascending order)
SELECT name, location, timeCreated
FROM google.storage.buckets WHERE project = 'stackql'
ORDER BY timeCreated;
Devolver un conjunto de resultados ordenado por una columna en orden descendente con la cláusula ORDER BY
Ejecute una instrucción SELECT para devolver campos del recurso de buckets de Cloud Storage, ordenando los resultados en orden descendente (los más recientes primero).
-- Order a list of Cloud Storage buckets by creation time (in descending order)
SELECT name, location, timeCreated
FROM google.storage.buckets WHERE project = 'stackql'
ORDER BY timeCreated DESC;
Obtener el primer resultado de una columna con las cláusulas ORDER BY y LIMIT
Ejecute una instrucción SELECT para devolver el bucket de Cloud Storage creado más recientemente.
-- Find the most recently created bucket
SELECT name, location, timeCreated
FROM google.storage.buckets WHERE project = 'stackql'
ORDER BY timeCreated DESC LIMIT 1;
Usar la función COUNT con las cláusulas GROUP BY y HAVING para contar recursos según una agrupación y un filtro
Ejecute una instrucción SELECT con una función COUNT, usando las cláusulas GROUP BY y HAVING para devolver el número de buckets de cada ubicación distinta de Asia.
-- Return a count of the number of buckets in every location other than Asia
SELECT name, location, count(*) as num_buckets
FROM google.storage.buckets WHERE project = 'stackql'
GROUP BY location
HAVING location != 'ASIA';
Para obtener más información sobre la función COUNT y otras funciones de agregación admitidas por StackQL, consulte Funciones de agregación.
Obtener la lista de VM bajo demanda y la interfaz de red correspondiente desde Azure VM Scaleset
Ejecute una instrucción SELECT con las funciones SPLIT_PART y JSON_EXTRACT para obtener la lista de VM bajo demanda y sus NIC. Tenga en cuenta que, sin un calificador, subscription_id y resource_group_name se aplican a los tres recursos.
SELECT c.name AS vm_name,
SPLIT_PART(JSON_EXTRACT(c.properties,'$.networkProfile.networkInterfaces[0].id'), '/', -1) AS nic_name
FROM
azure.compute.virtual_machine_scale_sets a
INNER JOIN azure.compute.virtual_machine_scale_set_vms b
ON a.name = b.virtualMachineScaleSetName
INNER JOIN azure.compute.virtual_machines c
ON b.name = c.name
WHERE subscription_id = '0123456789'
AND resource_group_name = 'vmss-flex'
AND JSON_EXTRACT(c.properties,'$.priority') is null;
Para obtener más información sobre las funciones de ventana, consulte Funciones de ventana.
Usar expresiones de tabla comunes (CTE) con WITH
Las CTE permiten definir conjuntos de resultados temporales con nombre a los que se puede hacer referencia en la consulta principal.
-- Combine and rank contributors across multiple repositories
WITH all_contributors AS (
SELECT login, contributions, html_url
FROM github.repos.contributors
WHERE owner = 'stackql' AND repo = 'stackql'
UNION ALL
SELECT login, contributions, html_url
FROM github.repos.contributors
WHERE owner = 'stackql' AND repo = 'stackql-deploy'
UNION ALL
SELECT login, contributions, html_url
FROM github.repos.contributors
WHERE owner = 'stackql' AND repo = 'stackql-provider-registry'
)
SELECT
DENSE_RANK() OVER (ORDER BY SUM(contributions) DESC) as rank,
login,
SUM(contributions) as total_contributions,
MAX(html_url) as html_url
FROM all_contributors
GROUP BY login
ORDER BY total_contributions DESC;
Para obtener más información sobre las CTE, consulte WITH (CTE).