"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué no puedo usar alias de columna directamente en los cálculos de la misma declaración de selección?

¿Por qué no puedo usar alias de columna directamente en los cálculos de la misma declaración de selección?

Publicado el 2025-03-22
Navegar:491

Why Can't I Use Column Aliases Directly in the Same SELECT Statement's Calculations?

para usar directamente alias de columna para el cálculo en consultas SQL

en una consulta SQL dada, intentando usar alias de columna avg_time y en las expresiones redonde (avg_time * cnt, 2) causará el error "columna" columna "avg_time" no existe ".

La causa raíz es la orden de cálculo de la instrucción

select . El programa procesa la declaración completa select al mismo tiempo, por lo que el valor de alias no se puede reconocer en ese momento.

Solución: Use subconsules anidados ]]

Para resolver este problema, las subconsules se pueden usar para encapsular la consulta, creando así efectivamente un conjunto de datos intermedio. En esta subconsulta, puede crear los alias de columna requeridos

avg_time y 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;
Ahora, cuando se ejecuta esta consulta, la subconsulta se calcula primero para generar un conjunto de datos que contiene el alias de columna deseado. Luego, la instrucción posterior

select puede referirse con éxito a estos alias.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3