3.1 KUMPULAN MENGIKUT kenyataan

Bahasa SQL sangat berkuasa. Selain pengambilan data mudah, ia membolehkan anda mengumpulkan data pada masa pertanyaan. Sebagai contoh, kita ingin tahu berapa banyak jenis produk setiap jenama yang kita ada, bagaimana kita boleh melakukannya?

Terdapat pengendali khas untuk ini GROUP BY, berikut adalah cara ia ditulis.

GROUP BY column

Mari tulis pertanyaan yang meminta SQL memaparkan bilangan jenis produk untuk setiap jenama. Permintaan sedemikian akan kelihatan seperti ini:

SELECT brand, COUNT(*)
FROM product
GROUP BY brand

Anda akan mendapat hasil pertanyaan berikut:

jenama kira(*)
(NULL) 2
Bosch 4
IKEA 6
LG 2
Bunga pintar 1

Mari kita menganalisis dengan teliti jenis permintaan yang kami tulis, dan jenis hasil yang kami perolehi. Akibatnya, kita melihat dua lajur. Yang pertama dengan senarai jenama, yang logik. Kami ingin mendapatkan sesuatu seperti satu set pasangan "jenama --> kuantiti" .

Sila ambil perhatian bahawa di antara nama jenama terdapat perkataan NULL. Sesungguhnya, kami mempunyai produk dalam jenama yang ditulis NULL, dan kami melihatnya di sini. Sedikit tidak dijangka, tetapi membantu. Kita boleh lihat berapa banyak produk tidak berjenama yang ada.

Sekarang mari kita lihat lebih dekat permintaan itu. Kami ingin mengetahui bilangan produk bagi setiap jenama, jadi kami menulis GROUP BY brand, dan dalam SELECTkami menulis jenama dan ungkapanCOUNT(*)

COUNT(*)ialah fungsi agregat yang dipanggil yang dilakukan pada sekumpulan baris. Dalam kes kami, dia hanya mengira nombor mereka. Terdapat banyak fungsi sedemikian, dan kami akan melihatnya sedikit kemudian.

3.2 Pertanyaan kompleks dengan GROUP BY

Sekarang mari kita tulis pertanyaan di mana kita mula-mula membuang produk yang harganya kurang daripada 10, dan kemudian mengumpulkannya. Permintaan sedemikian akan kelihatan seperti ini:

SELECT brand, COUNT(*)
FROM product
WHERE price > 10
GROUP BY brand

Anda akan mendapat hasil pertanyaan berikut:

jenama kira(*)
Bosch 4
IKEA 5
LG 2
Bunga pintar 1

Semua produk NULL hilang daripada jadual keputusan kami, kerana ia sangat murah, dan bilangan produk IKEA berkurangan sebanyak 1. Daripada 6 kepada 5.

Ini menunjukkan bahawa anda mula-mula menggunakan WHEREbaris yang diingini untuk menapis, dan kemudian gunakan kumpulan itu pada hasilnya.

3.3 Nama lajur hasil

Dengan cara ini, anda boleh memberi nama kepada lajur yang terhasil. Lihat bagaimana pelayan mencadangkan nama itu count(*)? Mari kita gantikan dengan jumlah. Permintaan sedemikian akan kelihatan seperti ini:

SELECT brand, COUNT(*) AS total
FROM product
WHERE price > 10
GROUP BY brand

Anda akan mendapat hasil pertanyaan berikut:

jenama jumlah
Bosch 4
IKEA 5
LG 2
Bunga pintar 1

Anda juga boleh menamakan semula lajur sedia ada. Mari kita ambil salah satu pertanyaan yang digunakan sebelum ini dan tambahkan nama baharu pada lajur.

SELECT
id AS  product_id,
name AS product_name,
price
FROM product
WHERE price < 20 AND brand IS NOT NULL

Anda akan mendapat hasil pertanyaan berikut:

product_id Nama Produk harga
2 kerusi 5.00
8 lampu 15.00