Limitations pour utiliser directement un alias de colonne pour le calcul dans les requêtes SQL
Dans une requête SQL donnée, essayant d'utiliser des alias de colonne avg_time
et dans les expressions
rond (avg_time * cnt, 2) provoquera l'erreur "colonne" avg_time "n'existe pas".
SELECT . Le programme traite l'instruction entière
sélectionner en même temps, de sorte que la valeur d'alias ne peut pas être reconnue à ce moment-là.
Solution: utilisez des sous-requêtes imbriquées ]
Pour résoudre ce problème, les sous-questionnaires peuvent être utilisés pour encapsuler la requête, créant ainsi efficacement un ensemble de données intermédiaire. Dans cette sous-requête, vous pouvez créer les alias de colonne requis avg_time et
cnt .
SELECT stddev_time, max_time, avg_time, min_time, cnt, ROUND(avg_time * cnt, 2) as slowdown
FROM (
SELECT
COALESCE(ROUND(stddev_samp(time), 2), 0) as stddev_time,
MAX(time) as max_time,
ROUND(AVG(time), 2) as avg_time,
MIN(time) as min_time,
COUNT(path) as cnt,
path
FROM
loadtime
GROUP BY
path
ORDER BY
avg_time DESC
LIMIT 10
) X;
Maintenant, lorsque cette requête est exécutée, la sous-requête est d'abord calculée pour générer un ensemble de données contenant l'alias de colonne souhaitée. Ensuite, l'instruction ultérieure select peut se référer avec succès à ces alias.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3