De GROUP BY-instructie in SQL wordt gebruikt om identieke gegevens met behulp van bepaalde functies in groepen te ordenen. d.w.z. als een bepaalde kolom dezelfde waarden in verschillende rijen heeft, dan worden deze rijen in een groep gerangschikt.
Java-lussen
Functies
- De GROUP BY-clausule wordt gebruikt met de SELECT-instructie.
- In de query wordt de GROUP BY-clausule na de WAAR clausule.
- In de query wordt de GROUP BY-clausule vóór de VOLGORDE BY-clausule, indien gebruikt.
- In de query wordt de Group BY-clausule vóór de Being-clausule geplaatst.
- Plaats de voorwaarde in de clausule hebben.
Syntaxis :
SELECTEER kolom1, functie_naam(kolom2)
FROM tabelnaam
WAAR voorwaarde
GROEPEREN OP kolom1, kolom2
ORDER OP kolom1, kolom2;
Uitleg:
- functie_naam : Naam van de gebruikte functie, bijvoorbeeld SUM() , AVG().
- tafel naam : Naam van de tafel.
- voorwaarde : Conditie: gebruikt.
Laten we aannemen dat we twee tabellen hebben. Voorbeeldtabel Werknemers en Studenten ziet er als volgt uit. Nadat we twee tabellen hebben toegevoegd, zullen we een aantal specifieke bewerkingen uitvoeren om meer te weten te komen over GROUP BY.
Werknemerstabel:
CREATE TABLE emp ( emp_no INT PRIMARY KEY, name VARCHAR(50), sal DECIMAL(10,2), age INT );>
Voeg wat willekeurige gegevens in een tabel in en dan zullen we enkele bewerkingen uitvoeren in GROUP BY.
Vraag:
INSERT INTO emp (emp_no, name, sal, age) VALUES (1, 'Aarav', 50000.00, 25), (2, 'Aditi', 60000.50, 30), (3, 'Amit', 75000.75, 35), (4, 'Anjali', 45000.25, 28), (5, 'Chetan', 80000.00, 32), (6, 'Divya', 65000.00, 27), (7, 'Gaurav', 55000.50, 29), (8, 'Isha', 72000.75, 31), (9, 'Kavita', 48000.25, 26), (10, 'Mohan', 83000.00, 33);>
Uitgang:
Studententafel:
Vraag:
CREATE TABLE student ( name VARCHAR(50), year INT, subject VARCHAR(50) ); INSERT INTO student (name, year, subject) VALUES ('Alice', 1, 'Mathematics'), ('Bob', 2, 'English'), ('Charlie', 3, 'Science'), ('David', 1, 'History'), ('Emily', 2, 'Art'), ('Frank', 3, 'Computer Science');> Uitgang:
Groeperen op enkele kolom
Groeperen Met één kolom betekent dat alle rijen met dezelfde waarde van alleen die specifieke kolom in één groep worden geplaatst. Beschouw de vraag zoals hieronder weergegeven:
Vraag:
SELECT NAME, SUM(SALARY) FROM emp GROUP BY NAME;>
De bovenstaande query levert de onderstaande uitvoer op:
c#-tutorial
Zoals u in de bovenstaande uitvoer kunt zien, zijn de rijen met dubbele NAMEN gegroepeerd onder dezelfde NAAM en is het bijbehorende SALARIS de som van het SALARIS van dubbele rijen. De functie SUM() van SQL wordt hier gebruikt om de som te berekenen.
Groeperen op meerdere kolommen
Groeperen op meerdere kolommen betekent bijvoorbeeld GROEPEREN OP kolom1, kolom2 . Dit betekent dat alle rijen met dezelfde waarden van kolommen worden geplaatst kolom 1 En kolom 2 in één groep. Overweeg de onderstaande vraag:
Vraag:
SELECT SUBJECT, YEAR, Count(*) FROM Student GROUP BY SUBJECT, YEAR;>
Uitgang:
Uitvoer : Zoals je in de bovenstaande uitvoer kunt zien, worden de studenten met hetzelfde ONDERWERP en JAAR in dezelfde groep geplaatst. En degenen wier enige ONDERWERP hetzelfde is, maar niet JAAR, behoren tot verschillende groepen. Dus hier hebben we de tabel gegroepeerd op basis van twee kolommen of meer dan één kolom.
MET clausule in GROUP BY-clausule
We weten dat de WHERE-clausule wordt gebruikt om voorwaarden op kolommen te plaatsen, maar wat als we voorwaarden op groepen willen plaatsen? Dit is waar de HAVING-clausule in gebruik komt. We kunnen de HAVING-clausule gebruiken om voorwaarden te plaatsen om te beslissen welke groep deel zal uitmaken van de uiteindelijke resultaatset. We kunnen ook geen aggregatiefuncties zoals SUM(), COUNT(), etc. gebruiken met de WHERE-clausule. We moeten dus de HAVING-clausule gebruiken als we een van deze functies in de voorwaarden willen gebruiken.
klasse versus object in Java
Syntaxis :
SELECTEER kolom1, functie_naam(kolom2)
FROM tabelnaam
WAAR voorwaarde
GROEPEREN OP kolom1, kolom2
Conditie hebben
ORDER OP kolom1, kolom2;
Uitleg:
- functie_naam : Naam van de gebruikte functie, bijvoorbeeld SUM() , AVG().
- tafel naam : Naam van de tafel.
- voorwaarde : Conditie: gebruikt.
Voorbeeld :
SELECT NAME, SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>3000;>
Uitvoer :
Zoals u in de bovenstaande uitvoer kunt zien, verschijnt slechts één groep van de drie groepen in de resultatenset, omdat dit de enige groep is waar de som van SALARY groter is dan 3000. We hebben hier dus de HAVING-clausule gebruikt om deze voorwaarde als de voorwaarde moet op groepen worden geplaatst, niet op kolommen.