Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Fungsi agregat tidak diizinkan dalam GROUP BY, tetapi ditemukan <sqlExpr>.
Parameter
- sqlExpr: Ekspresi yang berisi fungsi agregat.
Penjelasan
Tujuan dari klausul GROUP BY adalah untuk mengidentifikasi kumpulan grup yang berbeda.
Setiap grup baris kemudian diciutkan menjadi satu baris menggunakan fungsi agregat dalam daftar SELECT.
Terakhir, Anda kemudian dapat memfilter baris yang dikelompokkan menggunakan klausa HAVING.
sqlExpr terletak di klausa GROUP BY alih-alih daftar SELECT atau klausa HAVING.
Mitigasi
Mitigasi kesalahan tergantung pada penyebabnya:
Apakah Anda menentukan fungsi yang benar?
Ganti
sqlExprdengan fungsi yang sesuai yang bukan fungsi agregat.Apakah Anda berniat untuk mengagregasi ekspresi?
Hapus ekspresi dari
GROUP BYdan tambahkan ke daftarSELECT.Apakah Anda ingin memfilter ekspresi agregat?
Hapus ekspresi dari klausa
GROUP BYdan tambahkan menggunakan operatorBOOLEANke klausaHAVING.
Contoh
-- An aggregation in the GROUP BY clause
> SELECT a FROM VALUES(1, 2), (1, 3) AS T(a, b) GROUP BY a, sum(b);
[GROUP_BY_AGGREGATE] Aggregate functions are not allowed in GROUP BY, but found sum(T.b).; line 1 pos 58;
-- Move the expression to the SELECT list
> SELECT a, sum(b) FROM VALUES(1, 2), (1, 3) AS T(a, b) GROUP BY a;
1 5
-- An aggregation in the GROUP BY clause
> SELECT a, sum(b) FROM VALUES(1, 2), (1, 3), (2, 1) AS T(a, b) GROUP BY a, sum(b) > 1;
[GROUP_BY_AGGREGATE] Aggregate functions are not allowed in GROUP BY, but found (sum(T.b) > CAST(1 AS BIGINT)).; line 1 pos 74;
-- Move the expression to the HAVING clause
> SELECT a, sum(b) FROM VALUES(1, 2), (1, 3), (2, 1) AS T(a, b) GROUP BY a HAVING sum(b) > 1;
1 5
Terkait
- GROUP BY klausa
- HAVING klausa
-
SELECT(pilihan lanjutan)