Les sous-requêtes imbriquées intègrent une instruction SELECT dans une autre, permettant ainsi des analyses en plusieurs étapes, comme l'agrégation de résultats déjà agrégés.
Syntaxe
Utilisez une clause FROM dans l'instruction SELECT externe pour englober une sous-requête.
* | SELECT key FROM (sub_query)
Entourez la sous-requête de parenthèses
().Incluez la clause
FROM logdans la sous-requête pour interroger le Logstore actuel.
Exemples
Example 1
Comptez les requêtes par méthode, puis déterminez le nombre minimal.
-
Instruction de requête
* | SELECT min(PV) FROM ( SELECT count(1) as PV FROM log GROUP BY request_method ) -
Résultats de la requête et de l'analyse
Le résultat est
13, soit le nombre minimal de pages vues (PV) après regroupement par méthode de requête.
Example 2
Comparez les pages vues (PV) de l'heure actuelle avec celles de la même heure la veille. La plage de temps de la requête est définie sur 1 hour (on the hour). Le paramètre 86400 correspond au nombre de secondes dans une journée. Le terme log désigne le nom du Logstore.
-
Instruction de requête
* | SELECT diff [1] AS today, diff [2] AS yesterday, diff [3] AS ratio FROM ( SELECT compare(PV, 86400) AS diff FROM ( SELECT count(*) AS PV FROM log ) ) -
Résultats de la requête et de l'analyse
3337.0 : nombre de pages vues durant l'heure actuelle (par exemple, de 14 h 00 à 15 h 00 le 25 décembre 2020).
3522.0 : nombre de pages vues durant la même heure la veille (par exemple, de 14 h 00 à 15 h 00 le 24 décembre 2020).
0.947473026689381 : rapport entre le nombre de pages vues de l'heure actuelle et celui de la veille.
Example 3
Comptez le nombre de pages vues par page et calculez le pourcentage que chaque page représente par rapport au total.
-
Instruction de requête
* | SELECT request_uri AS "Accessed Page", c AS "Count", round(c * 100.0 /(sum(c) over()), 2) AS "Percentage (%)" FROM ( SELECT request_uri AS request_uri, count(*) AS c FROM log GROUP BY request_uri ORDER BY c DESC )