* 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
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