كيفية إصلاح الخطأ 'العمود غير صالح في قائمة التحديد لأنه غير مضمن في أي دالة مجمعة أو في عبارة GROUP BY'



جرب أداة القضاء على المشاكل

الخطأ ' العمود غير صالح في قائمة التحديد لأنه غير مضمن في دالة تجميعية أو في عبارة GROUP BY 'المذكور أدناه ينشأ عند تنفيذ' مجموعة من '، وقمت بتضمين عمود واحد على الأقل في قائمة التحديد ليس جزءًا من المجموعة بعبارة أو مضمّنًا في دالة مجمعة مثل max () ، min () ، sum () ، count () و متوسط ​​() . لذلك ، لكي يعمل الاستعلام ، نحتاج إلى إضافة جميع الأعمدة غير المجمعة إلى أي مجموعة بفقرة إذا كان ذلك ممكنًا وليس لها أي تأثير على النتائج أو تضمين هذه الأعمدة في دالة تجميعية مناسبة ، وسيعمل هذا مثل السحر. يظهر الخطأ في MS SQL ولكن ليس في MySQL.



خطأ 'العمود غير صالح في قائمة التحديد لأنه غير مضمن في دالة مجمعة أو في عبارة GROUP BY'



كلمتان رئيسيتان ' مجموعة من 'و' دالة مجمعة 'في هذا الخطأ. لذلك يجب أن نفهم متى وكيف نستخدمها.



تجميع حسب الشرط:

عندما يحتاج المحلل إلى تلخيص أو تجميع البيانات مثل الربح والخسارة والمبيعات والتكلفة والراتب وما إلى ذلك باستخدام SQL ، ' مجموعة من 'مفيد جدًا في هذا الصدد. على سبيل المثال ، لتلخيص ، المبيعات اليومية لتظهر للإدارة العليا. وبالمثل ، إذا كنت ترغب في حساب عدد الطلاب في قسم ما في مجموعة جامعية جنبًا إلى جنب مع الوظيفة الكلية ، فستساعدك على تحقيق ذلك.

تجميع حسب استراتيجية Split-Apply-Combine:

التجميع حسب استخدامات استراتيجية 'الانقسام والتطبيق والجمع'

  • تقسم المرحلة المنقسمة المجموعات بقيمها.
  • تطبق مرحلة التطبيق الوظيفة التجميعية وتولد قيمة واحدة.
  • تجمع المرحلة المدمجة جميع القيم في المجموعة كقيمة واحدة.

نموذج إستراتيجية 'SPLIT_APPLY_COMBINE'



في الشكل أعلاه ، يمكننا أن نرى أن العمود قد تم تقسيمه إلى ثلاث مجموعات بناءً على العمود الأول C1 ، ثم يتم تطبيق وظيفة التجميع على القيم المجمعة. أخيرًا ، تقوم مرحلة الدمج بتعيين قيمة واحدة لكل مجموعة.

يمكن تفسير ذلك باستخدام المثال أدناه. أولاً ، قم بإنشاء قاعدة بيانات باسم 'appuals'.

إنشاء قاعدة البيانات

مثال:

إنشاء جدول ' موظف باستخدام الكود التالي.

استخدم [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo]. [موظف] ([e_id] [int] NOT NULL ، [e_ename] [varchar] (50) NULL ، [dep_id] [int] NULL، [الراتب] [int] NULL، CONSTRAINT [PK_employee] PRIMARY KEY CLUSTERED ([e_id] ASC) WITH (PAD_INDEX = OFF، STATISTICS_NORECOMPUTE = OFF، IGNORE_DUP_KEY = OFF، ALLOW_ROW_LOCKS = ON، ALLOW_PAGE_LOCKS = ON، ALLOW_PAGE) PRIMARY]) في [PRIMARY] اذهب اضبط ANSI_PADDING OFF GO

إنشاء جدول الموظف

الآن ، أدخل البيانات في الجدول باستخدام الكود التالي.

قم بإدراج قيم الموظف (e_id ، e_ename ، dep_id ، الراتب) (101 ، 'Sadia