วิธีแก้ไขข้อผิดพลาด 'คอลัมน์ไม่ถูกต้องในรายการที่เลือกเนื่องจากไม่มีอยู่ในฟังก์ชันรวมหรือ GROUP BY clause'



ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา

ข้อผิดพลาด ' คอลัมน์ไม่ถูกต้องในรายการที่เลือกเนื่องจากไม่มีอยู่ในฟังก์ชันรวมหรือคำสั่ง GROUP BY ” ที่กล่าวถึงด้านล่างนี้เกิดขึ้นเมื่อคุณดำเนินการ“ GROUP BY ” และคุณได้รวมคอลัมน์อย่างน้อยหนึ่งคอลัมน์ในรายการที่เลือกซึ่งไม่ได้เป็นส่วนหนึ่งของกลุ่มตามส่วนคำสั่งและไม่มีอยู่ในฟังก์ชันการรวมเช่น สูงสุด (), นาที (), ผลรวม (), จำนวน () และ ค่าเฉลี่ย () . ดังนั้นเพื่อให้การสืบค้นทำงานได้เราจำเป็นต้องเพิ่มคอลัมน์ที่ไม่ได้รวมทั้งหมดลงในกลุ่มตามข้อถ้าเป็นไปได้และไม่มีผลกระทบใด ๆ ต่อผลลัพธ์หรือรวมคอลัมน์เหล่านี้ไว้ในฟังก์ชันการรวมที่เหมาะสมและสิ่งนี้จะทำงานได้อย่างมีเสน่ห์ ข้อผิดพลาดเกิดขึ้นใน MS SQL แต่ไม่ใช่ใน MySQL



ข้อผิดพลาด“ คอลัมน์ไม่ถูกต้องในรายการเลือกเนื่องจากไม่มีอยู่ในฟังก์ชันรวมหรือคำสั่ง GROUP BY”



คำหลักสองคำ“ จัดกลุ่มตาม ” และ“ ฟังก์ชันรวม ” ถูกใช้ในข้อผิดพลาดนี้ ดังนั้นเราต้องเข้าใจว่าจะใช้เมื่อใดและอย่างไร



จัดกลุ่มตามข้อ:

เมื่อนักวิเคราะห์ต้องการสรุปหรือรวบรวมข้อมูลเช่นกำไรขาดทุนยอดขายต้นทุนและเงินเดือน ฯลฯ โดยใช้ SQL“ GROUP BY ” มีประโยชน์มากในเรื่องนี้ ตัวอย่างเช่นเพื่อสรุปยอดขายรายวันเพื่อแสดงต่อผู้บริหารระดับสูง ในทำนองเดียวกันหากคุณต้องการนับจำนวนนักศึกษาในภาควิชาในกลุ่มมหาวิทยาลัยพร้อมกับฟังก์ชันการรวมจะช่วยให้คุณบรรลุสิ่งนี้ได้

จัดกลุ่มตามกลยุทธ์ 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]. [staff] ([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) ด้วย (PAD_INDEX = ปิด, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ONLOW_POT_ หลัก]) บน [หลัก] ไปตั้งค่า ANSI_PADDING ปิดไป

การสร้างตารางพนักงาน

ตอนนี้แทรกข้อมูลลงในตารางโดยใช้รหัสต่อไปนี้

แทรกลงในค่าพนักงาน (e_id, e_ename, dep_id, เงินเดือน) (101, 'Sadia