SQL 쿼리 계산에 열 별칭을 직접 사용하는 것에 대한 제한 사항
주어진 SQL 쿼리에서 ROUND(avg_time * cnt, 2)
표현식에 열 별칭 avg_time
및 cnt
을 사용하려고 하면 "'avg_time' 열이 존재하지 않습니다"라는 오류가 발생합니다.
근본 원인은 SELECT
문의 평가 순서에 있습니다. 프로그램은 전체 SELECT
문을 동시에 처리하므로 해당 시점에서는 별칭 값을 인식할 수 없습니다.
해결책: 중첩 하위 쿼리 사용
이 문제를 해결하려면 하위 쿼리를 사용하여 쿼리를 캡슐화하여 효과적으로 중간 데이터 세트를 생성할 수 있습니다. 이 하위 쿼리에서는 필수 열 별칭 avg_time
및 cnt
을 생성할 수 있습니다.
<code class="language-sql">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;</code>
이제 이 쿼리를 실행할 때 하위 쿼리가 먼저 평가되어 필요한 열 별칭이 포함된 데이터 세트가 생성됩니다. 그러면 후속 SELECT
문에서 이러한 별칭을 성공적으로 참조할 수 있습니다.
위 내용은 동일한 SELECT 문의 계산에서 열 별칭을 직접 사용할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!