5.1 Nduwe statement

Ana operator liyane sing migunani ing SQL sing digunakake karo GROUP BY, diarani HAVING.

Ing maknane, iku meh padha karo operator WHERE. Sampeyan mung WHEREngidini sampeyan nyetel saringan baris sadurunge ngelompokake, lan kanthi bantuan HAVINGsampeyan bisa nyetel saringan sing ditrapake kanggo rekaman sawise dikelompokake.

Tampilan umum pitakon nalika nggunakake asil pangelompokan lan nyaring kaya ing ngisor iki:

SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING condition

HAVINGmung bisa digunakake yen panjalukan ngemot GROUP BY.

Ayo nulis pitakon ing ngendi kita nampilake jumlah karyawan sing direkrut miturut taun.

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

Lan asil saka pitakonan iki:

hire_year gunggung
2012 1
2013 1
2014 1
2015 2
2018 1

Lan saiki kita ora kalebu taun nalika siji utawa kurang karyawan direkrut. Tuladha:

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

Lan asil saka pitakonan iki:

hire_year gunggung
2015 2

5.3 Urutan eksekusi statement

Kanggo nulis pitakon SQL sing bener lan efisien, sampeyan kudu ngerti carane dieksekusi dening server SQL.

Prosedur kanggo nindakake tumindak diatur kanthi ketat lan ora gumantung saka kepinginan sampeyan. Sampeyan ora bisa ngatur maneh operator lan njaluk pesenan beda.

Query SQL dieksekusi ing sawetara tahapan ing urutan iki.

  1. Tahap 1 - njupuk baris
    • Kaping pisanan, kabeh baris saka tabel sing ditemtokake dipilih.
    • Banjur kolom sing diwilang ditambahake.
    • Banjur kabeh baris, mung sing marem kondisi tetepWHERE
  2. Tahap 2 - klompok
    • Pengelompokan banjur ditrapake kanggo asil.
    • Sajrone klompok, lapangan kayata COUNT(*).
    • Pungkasan, saringan ditrapake kanggo asil klompok HAVING.
  3. Tahap 3 - ngurutake
    • Larik sing dipikolehi ing langkah sadurunge diurutake nggunakake ORDER BY.

Pungkasan, asil bisa dipotong nganggo LIMITlan OFFSET.