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 WHERE
magtakda ng filter ng hilera bago ang pagpapangkat, at sa tulong HAVING
maaari 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
HAVING
magagamit 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.
- 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 nananatili
WHERE
- 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
. - 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 LIMIT
at OFFSET
.
GO TO FULL VERSION