Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggunakan Alias ​​Lajur Selepas Pengumpulan dalam Penyata SQL SELECT?

Bagaimanakah Saya Boleh Menggunakan Alias ​​Lajur Selepas Pengumpulan dalam Penyata SQL SELECT?

Susan Sarandon
Lepaskan: 2025-01-14 10:06:44
asal
680 orang telah melayarinya

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

Pernyataan SQL SELECT: Menggunakan Alias ​​Lajur Pengumpulan Pasca

Operasi pangkalan data selalunya memerlukan penggunaan alias lajur dalam SELECT ungkapan berikutan klausa GROUP BY. Walau bagaimanapun, menggunakan alias secara langsung dalam konteks ini kerap membawa kepada ralat.

Pertimbangkan pertanyaan SQL ini:

<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>
Salin selepas log masuk

Melaksanakan pertanyaan ini mungkin menghasilkan ralat yang menunjukkan bahawa "avg_time" tidak ditentukan. Ini berlaku kerana pangkalan data memproses pernyataan SELECT secara keseluruhan; alias tidak ditakrifkan cukup awal untuk digunakan dalam pernyataan yang sama.

Penyelesaian melibatkan penggunaan subkueri. Ini membolehkan alias ditakrifkan dan boleh diakses dalam pertanyaan luar. Inilah pertanyaan yang diperbetulkan:

<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>
Salin selepas log masuk

Subkueri dalaman mentakrifkan alias. Pertanyaan luar kemudian menggunakan alias yang telah ditetapkan ini untuk pengiraan dan pemilihan, menghalang ralat. Pendekatan ini membolehkan manipulasi data berdasarkan hasil terkumpul dengan merujuk alias yang dibuat dalam skop subkueri.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Alias ​​Lajur Selepas Pengumpulan dalam Penyata SQL SELECT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan