"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que não posso usar aliases de coluna diretamente nos mesmos cálculos da declaração de seleção?

Por que não posso usar aliases de coluna diretamente nos mesmos cálculos da declaração de seleção?

Postado em 2025-03-22
Navegar:999

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

limitações para usar diretamente o alias da coluna para cálculo em consultas SQL

Em uma determinada Query SQL, tentando usar aliases da coluna avg_time e nas expressões redond (avg_time * cnt, 2) causará o erro "column" avg_time "não existe".

A causa raiz é a ordem de cálculo da instrução

selecione . O programa processa a instrução seleciona ao mesmo tempo, para que o valor do alias não possa ser reconhecido nesse momento.

Solução: use subconspositores aninhados ]

Para resolver esse problema, as subconeiras podem ser usadas para encapsular a consulta, criando efetivamente um conjunto de dados intermediário. Nesta subconsulta, você pode criar os aliases de coluna necessários

avg_time e cnt . • DE ( Selecione Coalesce (Round (stddev_samp (horário), 2), 0) como stddev_time, Max (tempo) como max_time, Redonda (avg (tempo), 2) como avg_time, Min (tempo) como min_time, Contagem (caminho) como cnt, caminho DE tempo de carga Grupo por caminho Ordem por avg_time desc Limite 10 ) X;

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;
pode consultar com êxito esses aliases.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3