logo

SQL | GRUPP AV

GROUP BY uttalande i SQL används för att ordna identiska data i grupper med hjälp av vissa funktioner. d.v.s. om en viss kolumn har samma värden i olika rader kommer den att ordna dessa rader i en grupp.

Funktioner

  • GROUP BY-satsen används med SELECT-satsen.
  • I frågan placeras GROUP BY-satsen efter VAR klausul.
  • I frågan placeras GROUP BY-satsen före BESTÄLLA BY-klausul om den används.
  • I frågan placeras Group BY-satsen före Having-satsen.
  • Placera villkor i have-satsen.

Syntax :



VÄLJ kolumn1, funktionsnamn(kolumn2)

FRÅN tabellnamn

VAR skick



GROUP BY kolumn1, kolumn2

ORDER BY kolumn1, kolumn2;

Förklaring:



  1. funktionsnamn : Namnet på den funktion som används till exempel SUM() , AVG().
  2. tabellnamn : Namn på tabellen.
  3. skick : Använt skick.

Låt oss anta att vi har två tabeller Anställd och Student Sample Tabell är som följer efter att ha lagt till två tabeller kommer vi att göra några specifika operationer för att lära oss om GROUP BY.

rekha filmskådespelerska

Personaltabell:

CREATE TABLE emp ( emp_no INT PRIMARY KEY, name VARCHAR(50), sal DECIMAL(10,2), age INT );>

Infoga några slumpmässiga data i en tabell och sedan kommer vi att utföra några operationer i GROUP BY.

Fråga:

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);>

Produktion:

Elevbord:

Fråga:

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');>

Produktion:

Gruppera efter enstaka kolumn

Gruppera med en kolumn innebär att placera alla rader med samma värde av endast den specifika kolumnen i en grupp. Betrakta frågan enligt nedan:

Fråga:

SELECT NAME, SUM(SALARY) FROM emp GROUP BY NAME;>

Ovanstående fråga ger följande utdata:

mysql infoga i

Som du kan se i ovanstående utdata, grupperas raderna med dubbletter av NAMN under samma NAMN och deras motsvarande LÖN är summan av LÖN för dubbletter av rader. SQL-funktionen SUM() används här för att beräkna summan.

Gruppera efter flera kolumner

Gruppera efter flera kolumner är t.ex. GROUP BY kolumn1, kolumn2 . Detta innebär att alla rader placeras med samma värden på kolumner kolumn 1 och kolumn 2 i en grupp. Tänk på frågan nedan:

Fråga:

SELECT SUBJECT, YEAR, Count(*) FROM Student GROUP BY SUBJECT, YEAR;>

Produktion:

Produktion : Som du kan se i ovanstående utdata placeras eleverna med både samma ÄMNE och ÅR i samma grupp. Och de vars enda ÄMNE är detsamma men inte ÅR tillhör olika grupper. Så här har vi grupperat tabellen efter två kolumner eller mer än en kolumn.

HA Klausul i GROUP BY Klausul

Vi vet att WHERE-satsen används för att placera villkor på kolumner men vad händer om vi vill placera villkor på grupper? Det är här HAVING-klausulen kommer till användning. Vi kan använda HAVING-klausulen för att ställa villkor för att bestämma vilken grupp som ska ingå i den slutliga resultatuppsättningen. Vi kan inte heller använda aggregerade funktioner som SUM(), COUNT(), etc. med WHERE-satsen. Så vi måste använda HAVING-satsen om vi vill använda någon av dessa funktioner under villkoren.

Syntax :

VÄLJ kolumn1, funktionsnamn(kolumn2)

FRÅN tabellnamn

VAR skick

GROUP BY kolumn1, kolumn2

HAR skick

ORDER BY kolumn1, kolumn2;

Förklaring:

ny linje python
  1. funktionsnamn : Namnet på den funktion som används till exempel SUM() , AVG().
  2. tabellnamn : Namn på tabellen.
  3. skick : Använt skick.

Exempel :

SELECT NAME, SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>3000;>

Produktion :

Som du kan se i ovanstående utdata visas bara en grupp av de tre grupperna i resultatuppsättningen eftersom det är den enda gruppen där summan av LÖN är större än 3000. Så vi har använt HAVING-satsen här för att placera detta villkor som villkoret måste placeras på grupper inte kolumner.