إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
لا يسمح بالدالات التجميعية في GROUP BY، ولكنها موجودة <sqlExpr>.
معلمات
- sqlExpr: تعبير يحتوي على دالة تجميعية.
تفسير
الغرض من العبارة GROUP BY هو تحديد مجموعة المجموعات المميزة.
ثم يتم طي كل مجموعة من الصفوف في صف واحد باستخدام الدالات التجميعية في SELECT القائمة.
وأخيرا، يمكنك بعد ذلك تصفية الصفوف المجمعة باستخدام العبارة HAVING .
sqlExpr يقع في GROUP BY عبارة بدلا من القائمة أو HAVING العبارةSELECT.
التخفيف
يعتمد التخفيف من الخطأ على السبب:
هل حددت الدالة الصحيحة؟
استبدل
sqlExprبدالة مناسبة ليست دالة تجميعية.هل تنوي تجميع التعبير؟
قم بإزالة التعبير من
GROUP BYوأضفه إلىSELECTالقائمة.هل تنوي التصفية على التعبير المجمع؟
قم بإزالة التعبير من العبارة
GROUP BYوإضافته باستخدامBOOLEANعامل تشغيل إلى العبارةHAVING.
امثله
-- 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