ClickHouse/docs/fr/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

Limite par Clause

Une requête avec l' LIMIT n BY expressions la clause sélectionne le premier n lignes pour chaque valeur distincte de expressions. La clé pour LIMIT BY peut contenir n'importe quel nombre de expression.

ClickHouse prend en charge les variantes de syntaxe suivantes:

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

Pendant le traitement de la requête, ClickHouse sélectionne les données classées par clé de tri. La clé de tri est définie explicitement à l'aide ORDER BY clause ou implicitement en tant que propriété du moteur de table. Puis clickhouse s'applique LIMIT n BY expressions et renvoie le premier n lignes pour chaque combinaison distincte de expressions. Si OFFSET est spécifié, puis pour chaque bloc de données qui appartient à une combinaison particulière de expressions, Clickhouse saute offset_value nombre de lignes depuis le début du bloc et renvoie un maximum de n les lignes en conséquence. Si offset_value est plus grand que le nombre de lignes dans le bloc de données, ClickHouse renvoie zéro lignes du bloc.

!!! note "Note" LIMIT BY n'est pas liée à LIMIT. Ils peuvent tous deux être utilisés dans la même requête.

Exemple

Exemple de table:

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);

Requête:

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 │
└────┴─────┘

Le SELECT * FROM limit_by ORDER BY id, val LIMIT 2 OFFSET 1 BY id requête renvoie le même résultat.

La requête suivante renvoie les 5 principaux référents pour chaque domain, device_type paire avec un maximum de 100 lignes au 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