5.1 MAY pahayag

May isa pang kapaki-pakinabang na operator sa SQL na ginagamit sa GROUP BY, ito ay tinatawag na HAVING.

Sa kahulugan nito, ganap itong kahalintulad sa operator WHERE. Binibigyang-daan ka lang nitong WHEREmagtakda ng filter ng hilera bago ang pagpapangkat, at sa tulong HAVINGmaaari kang magtakda ng filter na inilalapat sa mga tala pagkatapos ng pagpapangkat.

Ang pangkalahatang view ng query kapag gumagamit ng pagpapangkat at pag-filter ng mga resulta ng pagpapangkat ay ang mga sumusunod:

SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING condition

HAVINGmagagamit lamang kung ang kahilingan ay naglalaman ng GROUP BY.

Sumulat tayo ng query kung saan ipinapakita natin ang bilang ng mga natanggap na empleyado ayon sa taon.

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

At ang resulta ng query na ito:

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

At ngayon ibinubukod namin mula rito ang mga taon kung kailan isa o mas kaunting empleyado ang natanggap. Halimbawa:

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

At ang resulta ng query na ito:

hire_year kabuuan
2015 2

5.3 Pagkakasunud-sunod ng pagpapatupad ng mga pahayag

Upang magsulat ng tama at mahusay na mga query sa SQL, kailangan mong maunawaan kung paano isinasagawa ang mga ito ng SQL server.

Ang pamamaraan para sa pagsasagawa ng mga aksyon ay mahigpit na kinokontrol at hindi nakasalalay sa iyong pagnanais. Hindi mo maaaring muling ayusin ang mga operator at makakuha ng ibang order.

Ang SQL query ay isinasagawa sa ilang mga yugto sa pagkakasunud-sunod na ito.

  1. Stage 1 - pagkuha ng mga row
    • Una, ang lahat ng mga hilera mula sa tinukoy na talahanayan ay pinili.
    • Pagkatapos ay idinagdag ang mga kalkuladong field sa kanila.
    • At pagkatapos ng lahat ng mga hilera, tanging ang mga nakakatugon sa kondisyon ang nananatiliWHERE
  2. Stage 2 - pagpapangkat
    • Pagkatapos ay inilalapat ang pagpapangkat sa mga resulta.
    • Sa panahon ng pagpapangkat, ang mga patlang tulad ng COUNT(*).
    • Panghuli, may inilapat na filter sa resulta ng pagpapangkat HAVING.
  3. Stage 3 - pag-uuri
    • Ang mga row na nakuha sa mga nakaraang hakbang ay pinagsunod-sunod gamit ang ORDER BY.

Sa wakas, ang resulta ay maaaring i-trim gamit ang LIMITat OFFSET.