>데이터 베이스 >MySQL 튜토리얼 >SQL SELECT 문에서 그룹화한 후 열 별칭을 어떻게 사용할 수 있습니까?

SQL SELECT 문에서 그룹화한 후 열 별칭을 어떻게 사용할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-14 10:06:44675검색

How Can I Use Column Aliases After Grouping in SQL SELECT Statements?

SQL SELECT 문: 그룹화 후 열 별칭 활용

데이터베이스 작업에서는 SELECT 절 다음에 오는 GROUP BY 표현식 내에서 열 별칭을 사용해야 하는 경우가 많습니다. 그러나 이러한 맥락에서 별칭을 직접 사용하면 오류가 발생하는 경우가 많습니다.

다음 SQL 쿼리를 고려해보세요.

<code class="language-sql">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, 
    ROUND(avg_time * cnt, 2) as slowdown, path
FROM 
    loadtime
GROUP BY
    path
ORDER BY
    avg_time DESC
LIMIT 10;</code>

이 쿼리를 실행하면 "avg_time"이 정의되지 않았다는 오류가 발생할 수 있습니다. 이는 데이터베이스가 SELECT 문을 전체적으로 처리하기 때문에 발생합니다. 별칭이 동일한 문 내에서 사용할 수 있을 만큼 일찍 정의되지 않았습니다.

해결 방법은 하위 쿼리를 사용하는 것입니다. 이를 통해 외부 쿼리에서 별칭을 정의하고 액세스할 수 있습니다. 수정된 쿼리는 다음과 같습니다.

<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>

내부 하위 쿼리는 별칭을 정의합니다. 그런 다음 외부 쿼리는 계산 및 선택을 위해 미리 정의된 별칭을 사용하여 오류를 방지합니다. 이 접근 방식을 사용하면 하위 쿼리 범위 내에서 생성된 별칭을 참조하여 그룹화된 결과를 기반으로 데이터 조작이 가능합니다.

위 내용은 SQL SELECT 문에서 그룹화한 후 열 별칭을 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.