Cara memperbaiki Ralat ‘Lajur tidak sah dalam senarai pilih kerana tidak terkandung dalam fungsi agregat atau klausa GROUP BY’



Cuba Instrumen Kami Untuk Menghapuskan Masalah

Kesalahan ' Lajur tidak sah dalam senarai pilih kerana tidak terkandung dalam fungsi agregat atau klausa GROUP BY 'Yang disebutkan di bawah timbul semasa anda melaksanakan' KUMPULAN OLEH 'Pertanyaan, dan anda telah memasukkan sekurang-kurangnya satu lajur dalam senarai pilih yang bukan merupakan sebahagian daripada kumpulan mengikut klausa dan juga tidak terdapat dalam fungsi agregat seperti maks (), min (), jumlah (), kiraan () dan purata () . Oleh itu, untuk membuat pertanyaan berfungsi, kita perlu menambahkan semua lajur yang tidak digabungkan ke salah satu kumpulan mengikut klausa jika boleh dilaksanakan dan tidak memberi kesan pada hasil atau memasukkan lajur ini dalam fungsi agregat yang sesuai, dan ini akan berfungsi seperti daya tarikan. Kesalahan timbul dalam MS SQL tetapi tidak di MySQL.



Ralat 'Lajur tidak sah dalam senarai pilih kerana tidak terkandung dalam fungsi agregat atau klausa GROUP BY'



Dua kata kunci ' Kumpulan mengikut 'Dan' fungsi agregat Telah digunakan dalam ralat ini. Oleh itu, kita mesti memahami bila dan bagaimana menggunakannya.



Kumpulkan mengikut klausa:

Apabila penganalisis perlu meringkaskan atau mengumpulkan data seperti keuntungan, kerugian, penjualan, kos, dan gaji, dan lain-lain menggunakan SQL, ' KUMPULAN OLEH Sangat membantu dalam hal ini. Contohnya, jumlahnya, penjualan harian untuk ditunjukkan kepada pengurusan kanan. Begitu juga, jika anda ingin menghitung jumlah pelajar di jabatan dalam kumpulan universiti dan fungsi agregat akan membantu anda mencapai ini.

Kumpulkan strategi Split-Apply-Combine:

Kumpulkan dengan menggunakan strategi 'split-apply-gabungan'

  • Fasa perpecahan membahagikan kumpulan dengan nilai mereka.
  • Fasa berlaku menerapkan fungsi agregat dan menghasilkan satu nilai.
  • Fasa gabungan menggabungkan semua nilai dalam kumpulan sebagai satu nilai.

Contoh strategi 'SPLIT_APPLY_COMBINE'



Pada gambar di atas kita dapat melihat bahawa lajur telah dibahagikan kepada tiga kumpulan berdasarkan lajur pertama C1, dan kemudian fungsi agregat diterapkan pada nilai yang dikelompokkan. Akhirnya fasa gabungan memberikan satu nilai kepada setiap kumpulan.

Ini dapat dijelaskan dengan menggunakan contoh di bawah. Pertama, buat pangkalan data bernama 'appuals'.

Pembuatan pangkalan data

Contoh:

Buat jadual ' pekerja ”Menggunakan kod berikut.

GUNAKAN [appuals] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo]. [Pekerja] ([e_id] [int] BUKAN NULL, [e_ename] [varchar] (50) NULL, [dep_id] [int] NULL, [gaji] [int] NULL, CONSTRAINT [PK_employee] PRIMARY KEY CLUSTERED ([e_id] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = MATI, ALLOW_ROW_LOCKS = ONL, ONOC = ONLINE PRIMARY]) ON [PRIMARY] GO SET ANSI_PADDING OFF GO

Pembentukan jadual pekerja

Sekarang, Masukkan data ke dalam jadual menggunakan kod berikut.

Masukkan nilai pekerja (e_id, e_ename, dep_id, gaji) (101, 'Sadia