GROUP BY paziņojums SQL tiek izmantots, lai ar dažu funkciju palīdzību sakārtotu identiskus datus grupās. t.i., ja konkrētai kolonnai ir vienādas vērtības dažādās rindās, tā sakārtos šīs rindas grupā.
Iespējas
- GROUP BY klauzula tiek izmantota kopā ar priekšrakstu SELECT.
- Vaicājumā klauzula GROUP BY tiek ievietota aiz KUR klauzula.
- Vaicājumā klauzula GROUP BY tiek novietota pirms PASŪTĪT PĒC klauzulas, ja tiek izmantots.
- Vaicājumā klauzula Group BY tiek novietota pirms klauzulas Ņemot.
- Ievietojiet nosacījumu klauzulā, kurā ir.
Sintakse :
ATLASĪT kolonnu 1, funkcijas_nosaukums(2. kolonna)
NO tabulas_nosaukums
java apakšvirknes piemērsKUR nosacījums
GROUP BY 1. kolonna, 2. kolonna
ORDER BY kolonna1, kolonna2;
Paskaidrojums:
- funkcijas_nosaukums : izmantotās funkcijas nosaukums, piemēram, SUM() , AVG().
- tabulas_nosaukums : tabulas nosaukums.
- stāvokli : Stāvoklis lietots.
Pieņemsim, ka mums ir divas tabulas Darbinieku un Studentu parauga tabula ir šāda pēc divu tabulu pievienošanas mēs veiksim dažas īpašas darbības, lai uzzinātu par GROUP BY.
Darbinieku tabula:
css treknraksts
CREATE TABLE emp ( emp_no INT PRIMARY KEY, name VARCHAR(50), sal DECIMAL(10,2), age INT );>
Ievietojiet tabulā dažus nejaušus datus, un tad mēs veiksim dažas darbības GROUP BY.
Vaicājums:
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);>
Izvade:
Studentu tabula:
Vaicājums:
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');> Izvade:
Grupēšana pēc vienas kolonnas
Grupa Ar vienu kolonnu nozīmē, ka vienā grupā tiek ievietotas visas rindas ar vienādu vērtību tikai konkrētajai kolonnai. Apsveriet vaicājumu, kā parādīts zemāk:
Vaicājums:
SELECT NAME, SUM(SALARY) FROM emp GROUP BY NAME;>
Iepriekš minētais vaicājums radīs šādu izvadi:
virkņu masīvs c programmēšana
Kā redzat iepriekš sniegtajā izvadā, rindas ar dublikātiem NOSAUKUMU ir sagrupētas zem viena un tā paša NOSAUKUMA, un tām atbilstošā ALGA ir dublēto rindu ALGAS summa. Šeit summas aprēķināšanai tiek izmantota SQL funkcija SUM().
Grupēšana pēc vairākām kolonnām
Grupēšana pēc vairākām kolonnām ir, piemēram, GROUP BY 1. kolonna, 2. kolonna . Tas nozīmē, ka visas rindas ir jāievieto ar vienādām kolonnu vērtībām 1. kolonna un 2. kolonna vienā grupā. Apsveriet tālāk sniegto vaicājumu:
Vaicājums:
SELECT SUBJECT, YEAR, Count(*) FROM Student GROUP BY SUBJECT, YEAR;>
Izvade:
Izvade : Kā redzat augstāk esošajā izvadā, studenti ar vienu un to pašu PRIEKŠMETU un GADĀ tiek ievietoti vienā grupā. Un tie, kuriem vienīgais PRIEKŠMETS ir tas pats, bet ne GAD, pieder pie dažādām grupām. Tātad šeit mēs esam sagrupējuši tabulu pēc divām kolonnām vai vairākām kolonnām.
Klauzulas IZMANTOŠANA GROUP BY klauzulā
Mēs zinām, ka WHERE klauzula tiek izmantota, lai ievietotu nosacījumus kolonnās, bet ko darīt, ja mēs vēlamies ievietot nosacījumus grupām? Šeit tiek izmantota klauzula HAVING. Mēs varam izmantot punktu HAVING, lai noteiktu nosacījumus, lai izlemtu, kura grupa būs daļa no gala rezultātu kopas. Tāpat mēs nevaram izmantot apkopotās funkcijas, piemēram, SUM(), COUNT() utt. ar WHERE klauzulu. Tātad mums ir jāizmanto klauzula HAVING, ja mēs vēlamies izmantot kādu no šīm funkcijām nosacījumos.
Sintakse :
ATLASĪT kolonnu 1, funkcijas_nosaukums(2. kolonna)
NO tabulas_nosaukums
KUR nosacījums
GROUP BY 1. kolonna, 2. kolonna
IR stāvoklis
ORDER BY kolonna1, kolonna2;
Paskaidrojums:
bash lasīšanas fails
- funkcijas_nosaukums : izmantotās funkcijas nosaukums, piemēram, SUM() , AVG().
- tabulas_nosaukums : tabulas nosaukums.
- stāvokli : Stāvoklis lietots.
Piemērs :
Kā redzat iepriekš sniegtajā izvadā, rezultātu kopā parādās tikai viena grupa no trim grupām, jo tā ir vienīgā grupa, kurā ALGAS summa ir lielāka par 3000. Tāpēc mēs esam izmantojuši klauzulu HAVING, lai ievietotu šo nosacījumu kā nosacījums ir jāievieto grupās, nevis kolonnās.