ClickHouse/docs/es/sql-reference/statements/select/limit-by.md
Ivan Blinkov cd14f9ebcb
SQL reference refactoring (#10857)
* 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
2020-05-15 07:34:54 +03:00

2.5 KiB

machine_translated machine_translated_rev
true 72537a2d52

LIMITAR POR Cláusula

Una consulta con el LIMIT n BY expressions cláusula selecciona la primera n para cada valor distinto de expressions. La clave para LIMIT BY puede contener cualquier número de expresiones.

ClickHouse admite las siguientes variantes de sintaxis:

  • LIMIT [offset_value, ]n BY expressions
  • LIMIT n OFFSET offset_value BY expressions

Durante el procesamiento de consultas, ClickHouse selecciona los datos ordenados por clave de ordenación. La clave de ordenación se establece explícitamente utilizando un ORDER BY cláusula o implícitamente como una propiedad del motor de tablas. Entonces se aplica ClickHouse LIMIT n BY expressions y devuelve la primera n filas para cada combinación distinta de expressions. Si OFFSET se especifica, a continuación, para cada bloque de datos que pertenece a una combinación distinta de expressions, ClickHouse salta offset_value número de filas desde el principio del bloque y devuelve un máximo de n filas como resultado. Si offset_value es mayor que el número de filas en el bloque de datos, ClickHouse devuelve cero filas del bloque.

!!! note "Nota" LIMIT BY no está relacionado con LIMIT. Ambos se pueden usar en la misma consulta.

Ejemplos

Tabla de muestra:

CREATE TABLE limit_by(id Int, val Int) ENGINE = Memory;
INSERT INTO limit_by VALUES (1, 10), (1, 11), (1, 12), (2, 20), (2, 21);

Consulta:

SELECT * FROM limit_by ORDER BY id, val LIMIT 2 BY id
┌─id─┬─val─┐
│  1 │  10 │
│  1 │  11 │
│  2 │  20 │
│  2 │  21 │
└────┴─────┘
SELECT * FROM limit_by ORDER BY id, val LIMIT 1, 2 BY id
┌─id─┬─val─┐
│  1 │  11 │
│  1 │  12 │
│  2 │  21 │
└────┴─────┘

El SELECT * FROM limit_by ORDER BY id, val LIMIT 2 OFFSET 1 BY id query devuelve el mismo resultado.

La siguiente consulta devuelve las 5 referencias principales para cada domain, device_type par con un máximo de 100 filas en total (LIMIT n BY + LIMIT).

SELECT
    domainWithoutWWW(URL) AS domain,
    domainWithoutWWW(REFERRER_URL) AS referrer,
    device_type,
    count() cnt
FROM hits
GROUP BY domain, referrer, device_type
ORDER BY cnt DESC
LIMIT 5 BY domain, device_type
LIMIT 100