3.1 GROUP BY statement
Basa SQL banget kuat. Saliyane njupuk data sing gampang, sampeyan bisa nglumpukake data ing wektu pitakon. Contone, kita pengin ngerti pirang-pirang jinis produk saben merek, kepiye carane bisa nindakake?
Ana operator khusus kanggo iki GROUP BY
, iki carane ditulis.
GROUP BY column
Ayo nulis pitakon sing njaluk SQL kanggo nampilake jumlah jinis produk kanggo saben merek. Panjaluk kasebut bakal katon kaya iki:
SELECT brand, COUNT(*)
FROM product
GROUP BY brand
Sampeyan bakal entuk asil pitakon ing ngisor iki:
merek | ngitung(*) |
---|---|
(NULL) | 2 |
Bosch | 4 |
IKEA | 6 |
LG | 2 |
Kembang pinter | 1 |
Ayo kanthi ati-ati nganalisa panjaluk apa sing kita tulis, lan asil apa sing ditampa. Akibaté, kita ndeleng rong kolom. Pisanan karo dhaptar merek, sing logis. Kita pengin njaluk kaya set pasangan "merek -> kuantitas" .
Wigati dimangerteni menawa ing antarane jeneng merek ana tembung NULL
. Pancen, kita duwe produk ing merek sing ditulis NULL
, lan kita ndeleng ing kene. A sethitik ora dikarepke, nanging mbiyantu. Kita bisa ndeleng carane akeh produk unbranded ana.
Saiki ayo padha nliti panyuwunan kasebut. We wanted kanggo ngerti nomer produk saben account, supaya kita wrote GROUP BY brand
, lan ing SELECT
kita wrote account lan expressionCOUNT(*)
COUNT(*)
minangka fungsi agregat sing ditindakake ing klompok larik. Ing kasus kita, dheweke mung ngetung nomer. Ana akèh fungsi kuwi, lan kita bakal katon ing wong sethitik mengko.
3.2 Pitakonan Komplek karo GROUP BY
Saiki ayo nulis pitakon ing ngendi kita mbuwang produk sing regane kurang saka 10, banjur dikelompokake. Panjaluk kasebut bakal katon kaya iki:
SELECT brand, COUNT(*)
FROM product
WHERE price > 10
GROUP BY brand
Sampeyan bakal entuk asil pitakon ing ngisor iki:
merek | ngitung(*) |
---|---|
Bosch | 4 |
IKEA | 5 |
LG | 2 |
Kembang pinter | 1 |
Kabeh produk NULL ilang saka tabel asil, amarga murah banget, lan jumlah produk IKEA suda 1. Saka 6 dadi 5.
Iki nuduhake yen sampeyan nggunakake WHERE
garis sing dipengini kanggo nyaring, lan mung banjur aplikasi klompok kanggo asil.
3.3 Jeneng kolom asil
Miturut cara, sampeyan bisa menehi jeneng kanggo kolom asil. Waca carane server menehi saran jeneng count(*)
? Ayo diganti karo total. Panjaluk kasebut bakal katon kaya iki:
SELECT brand, COUNT(*) AS total
FROM product
WHERE price > 10
GROUP BY brand
Sampeyan bakal entuk asil pitakon ing ngisor iki:
merek | gunggung |
---|---|
Bosch | 4 |
IKEA | 5 |
LG | 2 |
Kembang pinter | 1 |
Sampeyan uga bisa ngganti jeneng kolom sing wis ana. Ayo njupuk salah sawijining pitakon sing sadurunge digunakake lan tambahake jeneng anyar ing kolom kasebut.
SELECT
id AS product_id,
name AS product_name,
price
FROM product
WHERE price < 20 AND brand IS NOT NULL
Sampeyan bakal entuk asil pitakon ing ngisor iki:
id_produk | jeneng_produk | regane |
---|---|---|
2 | Kursi | 5.00 |
8 | lampu | 15.00 |