4.1 Pengelompokan kolom

Yang juga sangat penting adalah jika Anda mengelompokkan rekaman, maka di bagian tersebut SELECTAnda hanya dapat menentukan kolom yang digunakan untuk mengelompokkan data.

Andatidak bisatulis kueri jenis dan tentukan SELECTkolom nama di bagian :

SELECT brand, name
FROM product
GROUP BY brand

Anda memiliki banyak baris di tabel produk dengan nama field , dan tidak jelas baris mana yang perlu Anda ganti di sini. Pikirkan lagi: Anda ingin mengetahui jumlah produk dari masing-masing merek dan bagaimana tabel yang dihasilkan bisa mendapatkan nama produk tersebut?

Jika Anda menggunakan operator GROUP BY, maka baris normal tidak dapat masuk ke hasil Anda, tetapi hanya kolom tempat data dikelompokkan dan "kolom yang dihitung", sepertiCOUNT(*)

4.2 Pengelompokan berdasarkan kolom terhitung

Tetapi Anda dapat mengelompokkan berdasarkan beberapa kolom dan bahkan berdasarkan kolom terhitung. Contoh:

SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year

Dan hasil dari kueri ini:

sewa_tahun total
2012 1
2013 1
2014 1
2015 2
2018 1

Mari kita analisis permintaan kita.

Di tabel karyawan , setiap karyawan memiliki tanggal perekrutan yang unik, jadi pengelompokan data berdasarkan itu tidak akan berhasil - akan ada satu catatan untuk setiap tanggal dan pengelompokan tidak masuk akal. Tetapi jika kita berpindah dari tanggal perekrutan ke tahun perekrutan, maka mungkin situasinya di mana perusahaan mempekerjakan beberapa karyawan pada tahun yang sama.

Mari kita lihat lagi seperti apa tabel ini sebelum dikelompokkan:

SELECT
 	id,
 	name,
 	YEAR(join_date) AS hire_year,
 	join_date
FROM employee

Dan hasil dari kueri ini:

pengenal nama sewa_tahun join_date
1 Ivanov Ivan 2012 30-06-2012
2 Petrov Petr 2013 12-08-2013
3 Ivanov Sergey 2014 01-01-2014
4 Rabinovich Moisha 2015 12-05-2015
5 Kirienko Anastasia 2015 10-10-2015
6 Vaska 2018 11-11-2018

Tetapi tabel yang dihasilkan ini dapat dikelompokkan berdasarkan tahun_pekerjaan dan mencari tahu berapa banyak orang yang dipekerjakan pada tahun tertentu.

4.3 Pengelompokan berdasarkan beberapa kolom

Sekarang mari kita coba mencari tahu berapa banyak karyawan yang kita pekerjakan setiap bulan setiap tahunnya. Untuk melakukan ini, kita perlu menambahkan bukan hanya satu, tetapi dua kolom kalkulasi ke kueri sekaligus - tahun perekrutan (tahun_pekerjaan) dan bulan perekrutan (bulan_pekerjaan).

Mari tulis kueri seperti ini:

SELECT
 	id,
 	name,
 	YEAR(join_date) AS hire_year,
 	MONTH(join_date) AS hire_month,
 	join_date
FROM employee

Dan hasil dari kueri ini:

pengenal nama sewa_tahun sewa_bulan join_date
1 Ivanov Ivan 2012 6 30-06-2012
2 Petrov Petr 2013 8 12-08-2013
3 Ivanov Sergey 2014 1 01-01-2014
4 Rabinovich Moisha 2015 5 12-05-2015
5 Kirienko Anastasia 2015 10 10-10-2015
6 Vaska 2018 sebelas 11-11-2018

Jika kita mengelompokkan data dalam tabel hasil ini berdasarkan bulan, maka kita cukup mengelompokkan orang ke dalam grup, terlepas dari tahun mereka dipekerjakan. Dan kita membutuhkan tabel yang dihasilkan memiliki tiga kolom: tahun, bulan, dan jumlah karyawan yang dipekerjakan.

Untuk melakukan ini, setelah operator, GROUP BYAnda perlu menggunakan nama bukan satu kolom, tetapi dua. Contoh:

SELECT
 	YEAR(join_date) AS hire_year,
 	MONTH(join_date) AS hire_month,
 	COUNT(*) AS total
FROM employee
GROUP BY hire_year, hire_month

Dan hasil dari kueri ini:

sewa_tahun sewa_bulan total
2012 6 1
2013 8 1
2014 1 1
2015 5 1
2015 10 1
2018 sebelas 1

Kami memiliki sedikit catatan dalam tabel, jadi ada unit di mana-mana di kolom total. Dan omong-omong, perhatikan bahwa semakin banyak kolom yang kita kelompokkan, semakin banyak baris yang kita miliki dalam hasilnya.