Pengelompokan lanjutan

Tersedia

5.1 MEMPUNYAI pernyataan

Terdapat satu lagi pengendali berguna dalam SQL yang digunakan dengan GROUP BY, ia dipanggil HAVING.

Dalam maknanya, ia adalah sama sepenuhnya dengan operator WHERE. Ia hanya WHEREmembenarkan anda menetapkan penapis baris sebelum mengumpulkan, dan dengan bantuan HAVINGanda boleh menetapkan penapis yang digunakan pada rekod selepas pengumpulan.

Pandangan umum pertanyaan apabila menggunakan hasil pengumpulan dan penapisan kumpulan adalah seperti berikut:

SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING condition

HAVINGhanya boleh digunakan jika permintaan mengandungi GROUP BY.

Mari tulis pertanyaan di mana kami memaparkan bilangan pekerja yang diupah mengikut tahun.

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

Dan hasil daripada pertanyaan ini:

upah_tahun jumlah
2012 1
2013 1
2014 1
2015 2
2018 1

Dan kini kami mengecualikan daripadanya tahun-tahun apabila seorang atau kurang pekerja diambil bekerja. Contoh:

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

Dan hasil daripada pertanyaan ini:

upah_tahun jumlah
2015 2

5.3 Susunan pelaksanaan kenyataan

Untuk menulis pertanyaan SQL yang betul dan cekap, anda perlu memahami cara ia dilaksanakan oleh pelayan SQL.

Prosedur untuk melakukan tindakan dikawal ketat dan tidak bergantung pada keinginan anda. Anda tidak boleh menyusun semula operator dan mendapatkan pesanan yang berbeza.

Pertanyaan SQL dilaksanakan dalam beberapa peringkat dalam susunan ini.

  1. Peringkat 1 - mengambil baris
    • Pertama, semua baris daripada jadual yang ditentukan dipilih.
    • Kemudian medan yang dikira ditambahkan padanya.
    • Dan kemudian daripada semua baris, hanya yang memenuhi syarat yang kekalWHERE
  2. Peringkat 2 - berkumpulan
    • Pengelompokan kemudian digunakan pada keputusan.
    • Semasa kumpulan, medan seperti COUNT(*).
    • Akhir sekali, penapis digunakan pada hasil pengumpulan HAVING.
  3. Peringkat 3 - menyusun
    • Baris yang diperoleh dalam langkah sebelumnya diisih menggunakan ORDER BY.

Akhirnya, hasilnya boleh dipangkas dengan LIMITdan OFFSET.

Komen
  • Popular
  • Baru
  • Tua
Anda mesti log masuk untuk meninggalkan ulasan
Halaman ini tidak mempunyai sebarang ulasan lagi