Help wanted!
The following content of this documentation page has been machine-translated. But unlike other websites, it is not done on the fly. This translated text lives on GitHub repository alongside main ClickHouse codebase and waits for fellow native speakers to make it more human-readable. You can also use the original English version as a reference.
CON Cláusula
Esta sección proporciona soporte para expresiones de tabla común (CTE), por lo que los resultados de WITH
cláusula se puede utilizar en el interior SELECT
clausula.
Limitacion
- No se admiten consultas recursivas.
- Cuando se usa subconsulta dentro de la sección WITH , su resultado debe ser escalar con exactamente una fila.
- Los resultados de la expresión no están disponibles en las subconsultas.
Ejemplos
Ejemplo 1: Usando expresión constante como “variable”
WITH '2019-08-01 15:23:00' as ts_upper_bound
SELECT *
FROM hits
WHERE
EventDate = toDate(ts_upper_bound) AND
EventTime <= ts_upper_bound
Ejemplo 2: Evictar el resultado de la expresión de sum (bytes) de la lista de columnas de la cláusula SELECT
WITH sum(bytes) as s
SELECT
formatReadableSize(s),
table
FROM system.parts
GROUP BY table
ORDER BY s
Ejemplo 3: Uso de los resultados de la subconsulta escalar
/* this example would return TOP 10 of most huge tables */
WITH
(
SELECT sum(bytes)
FROM system.parts
WHERE active
) AS total_disk_usage
SELECT
(sum(bytes) / total_disk_usage) * 100 AS table_disk_usage,
table
FROM system.parts
GROUP BY table
ORDER BY table_disk_usage DESC
LIMIT 10
Ejemplo 4: Reutilización de la expresión en subconsulta
Como solución alternativa para la limitación actual para el uso de expresiones en subconsultas, puede duplicarla.
WITH ['hello'] AS hello
SELECT
hello,
*
FROM
(
WITH ['hello'] AS hello
SELECT hello
)
┌─hello─────┬─hello─────┐
│ ['hello'] │ ['hello'] │
└───────────┴───────────┘