Cashar 4

GROUP BY & Hawlaha Xisaabta

Baro sida loo isticmaalo COUNT, SUM, AVG, MIN, MAX iyo GROUP BY si aad xogta koobi uga samaynayso warbixinno muhiim ah.

Hawlaha Koobida iyo GROUP BY

Warbixinta dhabta ah badanaa ma ahan “hel safafka” — waxay badanaa tahay “iisu celi”, “soo samaynta wadarta,” ama “hel celceeliska.” Halkaas ayuu yimaadaa GROUP BY iyo hawlaha koobida (aggregate functions).

Hawlaha Koobida Aasaasiga

-- Tirada safaf
SELECT COUNT(*) FROM dalabka;
SELECT COUNT(email) FROM macaamiilka; -- tiro kaliya meesha email jirto

-- Wadarta
SELECT SUM(xad * qiimaha) AS dakhliga_guud FROM dalabka;

-- Celceeliska
SELECT AVG(mushaharka) AS mushahar_celceeliska FROM shaqaalaha;

-- Ugu yar / ugu badan
SELECT MIN(qiimaha) AS ugu_jaban FROM alaabta;
SELECT MAX(qiimaha) AS ugu_qaali FROM alaabta;

GROUP BY — Kala Samaynta Kooxo

GROUP BY wuxuu koobaa kooxo natiijooyinka iyadoo ku saleysan qiimayaasha hal tiir (ama in ka badan):

-- Tirada dalabka qof kasta
SELECT
  isticmaale_id,
  COUNT(*)    AS tirada_dalabka,
  SUM(wadarta) AS guud_wadarta
FROM dalabka
GROUP BY isticmaale_id;

-- Lacag-helka sannadle ah ee waax kasta
SELECT
  waaxda,
  COUNT(*)      AS tirada_shaqaalaha,
  AVG(mushaharka) AS mushahar_celceeliska,
  SUM(mushaharka) AS miisaaniyadda_guud
FROM shaqaalaha
GROUP BY waaxda
ORDER BY miisaaniyadda_guud DESC;

HAVING — Shaandheynta Kooxaha

WHERE wuxuu shaandheeyaa safaf kasta kahor koobida. HAVING wuxuu shaandheeyaa ka dib koobida — wuxuuna shaqeeyaa kooxaha:

-- Isticmaalayaasha 5-ka dalabba ka badan
SELECT
  isticmaale_id,
  COUNT(*) AS tirada_dalabka
FROM dalabka
GROUP BY isticmaale_id
HAVING COUNT(*) > 5
ORDER BY tirada_dalabka DESC;

-- Waaxaha mushahar celceeliska $60,000 ka sarreeya
SELECT
  waaxda,
  AVG(mushaharka) AS mushahar_celceeliska
FROM shaqaalaha
GROUP BY waaxda
HAVING AVG(mushaharka) > 60000;

Xeerka fudud: WHERE → safaf. HAVING → kooxo.

Tusaale Dhamaystiran: Warbixinta Iibka

SELECT
  nooca_alaabta,
  COUNT(*)              AS tirada_dalabka,
  SUM(d.xad)           AS guud_xad,
  ROUND(AVG(a.qiimaha), 2) AS qiimaha_celceeliska,
  SUM(d.xad * a.qiimaha) AS dakhliga_guud
FROM dalabka        AS d
JOIN alaabta        AS a ON d.alaab_id = a.id
WHERE d.taariikh >= '2024-01-01'
GROUP BY nooca_alaabta
HAVING SUM(d.xad * a.qiimaha) > 10000
ORDER BY dakhliga_guud DESC;

Waxay ku soo celisaa: Noocyada alaabta dakhligoodii $10,000 ka badan uu yahay sannadkan — oo kala soocaya ugu dakhliya badan.

Xukumista Tartanka Qorista: SQLSAM

Xeer fudud oo lagu xusuusto tartanka saxa ah:

S — SELECT
F — FROM
W — WHERE
G — GROUP BY
H — HAVING
O — ORDER BY
L — LIMIT

Database-ka si kala duwan ayuu u fuliyaa, laakiin qorista waa in raacto nidaamkan.

Hawlaha Qoraalka oo ku Xidha

-- CONCAT: isku dar qoraalka
SELECT CONCAT(magaca_hore, ' ', magaca_dambe) AS magaca_buuxa
FROM shaqaalaha;

-- LENGTH: dhererka xadhiga
SELECT magaca, LENGTH(magaca) AS dhererka
FROM alaabta
ORDER BY dhererka DESC;

-- UPPER / LOWER
SELECT UPPER(email) FROM macaamiilka;

-- SUBSTRING
SELECT SUBSTRING(taleefanka, 1, 3) AS code_dalka FROM macaamiilka;

Xirfad Dhaqameed

Warbixinta Ugu Fiican ee Iibiyeyaasha

Haysataa miisas: `iibiyeyaasha` (id, magaca, gobollada) iyo `iibka` (id, iibiye_id, xad, taariikh). Hel shanta iibiye ugu sarreeya iyadoo laga eegayo wadarta xadka iibka, oo keliya 2024-dii. Soo celi magaca iibiyaha, gobollada, tirada dalabka, iyo guud xadka.

Knowledge Check

Aggregates Check

0/1 la jawaabay

Casharka ka horreeya dhammaadka koorsada, eeg haddii GROUP BY kuu caddaaday.

1`GROUP BY` waxaa la socda inta badan functions sida:

Billow Maanta

Diyaar ma u tahay inaad
noqoto khabiir?

Ku biir 1,200+ arday ah oo ku baranaya koodka si dhakhso ah — bilaash, adigoo raacaya xawaarahaaga.