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.

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

Rating: 4 - 5 votes

Was this content helpful?
★★★★☆