4.1 Pengelompokan kolom
Yang juga sangat penting adalah jika Anda mengelompokkan rekaman, maka di bagian tersebut SELECT
Anda hanya dapat menentukan kolom yang digunakan untuk mengelompokkan data.
Andatidak bisatulis kueri jenis dan tentukan SELECT
kolom 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 BY
Anda 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.