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 SELECTkita 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 WHEREgaris 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