Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat 'Bukan Fungsi Kumpulan Tunggal' dalam SQL?

Bagaimana untuk Menyelesaikan Ralat 'Bukan Fungsi Kumpulan Tunggal' dalam SQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-04 07:46:40661semak imbas

How to Resolve the

Memahami "Bukan Fungsi Kumpulan Tunggal Kumpulan" dalam SQL

Apabila cuba menggabungkan fungsi kumpulan dengan ungkapan lajur individu dalam SELECT kenyataan, seperti dalam pertanyaan yang disediakan:

SELECT SSN, MAX(SUM(TIME))
FROM downloads
GROUP BY SSN

Anda mungkin menghadapi "bukan satu kumpulan ralat fungsi kumpulan". Ini berlaku kerana fungsi kumpulan SUM(TIME) mengira nilai tunggal untuk setiap kumpulan (SSN), menjadikannya tidak serasi dengan ungkapan lajur individu SSN.

Untuk menyelesaikan ralat ini, anda mempunyai beberapa pilihan:

  1. Alih keluar Lajur Individu Ungkapan:

    SELECT MAX(SUM(TIME))
    FROM downloads
    GROUP BY SSN

    Ini hanya akan mengembalikan nilai jumlah maksimum tanpa SSN yang sepadan.

  2. Tambah KUMPULAN MENGIKUT Klausa untuk Semua Lajur Ungkapan:

    SELECT SSN, MAX(SUM(TIME))
    FROM downloads
    GROUP BY SSN, TIME

    Ini akan mengumpulkan hasil mengikut SSN dan TIME, menjadikan fungsi MAX(SUM(TIME)) sah.

  3. Gunakan Subquery Agregat:

    SELECT SSN, SUM(TIME)
    FROM downloads
    GROUP BY SSN
    HAVING SUM(TIME) = (SELECT MAX(SUM(TIME)) FROM downloads GROUP BY SSN)

    Subquery ini mengira nilai jumlah maksimum dan memilih hanya baris di mana JUMLAH(MASA) untuk setiap SSN sepadan dengannya maksimum.

Bergantung pada keperluan khusus anda, salah satu daripada penyelesaian ini akan membolehkan anda memperoleh hasil yang diingini tanpa menghadapi ralat "bukan fungsi kumpulan tunggal".

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Bukan Fungsi Kumpulan Tunggal' dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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