mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-14 02:12:21 +00:00
cd14f9ebcb
* split up select.md * array-join.md basic refactoring * distinct.md basic refactoring * format.md basic refactoring * from.md basic refactoring * group-by.md basic refactoring * having.md basic refactoring * additional index.md refactoring * into-outfile.md basic refactoring * join.md basic refactoring * limit.md basic refactoring * limit-by.md basic refactoring * order-by.md basic refactoring * prewhere.md basic refactoring * adjust operators/index.md links * adjust sample.md links * adjust more links * adjust operatots links * fix some links * adjust aggregate function article titles * basic refactor of remaining select clauses * absolute paths in make_links.sh * run make_links.sh * remove old select.md locations * translate docs/es * translate docs/fr * translate docs/fa * remove old operators.md location * change operators.md links * adjust links in docs/es * adjust links in docs/es * minor texts adjustments * wip * update machine translations to use new links * fix changelog * es build fixes * get rid of some select.md links * temporary adjust ru links * temporary adjust more ru links * improve curly brace handling * adjust ru as well * fa build fix * ru link fixes * zh link fixes * temporary disable part of anchor checks
81 lines
2.0 KiB
Markdown
81 lines
2.0 KiB
Markdown
---
|
|
machine_translated: true
|
|
machine_translated_rev: 72537a2d527c63c07aa5d2361a8829f3895cf2bd
|
|
---
|
|
|
|
# CON Cláusula {#with-clause}
|
|
|
|
Esta sección proporciona soporte para expresiones de tabla común ([CTE](https://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL)), por lo que los resultados de `WITH` cláusula se puede utilizar en el interior `SELECT` clausula.
|
|
|
|
## Limitacion {#limitations}
|
|
|
|
1. No se admiten consultas recursivas.
|
|
2. Cuando se usa subconsulta dentro de la sección WITH , su resultado debe ser escalar con exactamente una fila.
|
|
3. Los resultados de la expresión no están disponibles en las subconsultas.
|
|
|
|
## Ejemplos {#examples}
|
|
|
|
**Ejemplo 1:** Usando expresión constante como “variable”
|
|
|
|
``` sql
|
|
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
|
|
|
|
``` sql
|
|
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
|
|
|
|
``` sql
|
|
/* 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.
|
|
|
|
``` sql
|
|
WITH ['hello'] AS hello
|
|
SELECT
|
|
hello,
|
|
*
|
|
FROM
|
|
(
|
|
WITH ['hello'] AS hello
|
|
SELECT hello
|
|
)
|
|
```
|
|
|
|
``` text
|
|
┌─hello─────┬─hello─────┐
|
|
│ ['hello'] │ ['hello'] │
|
|
└───────────┴───────────┘
|
|
```
|