sql >> Database teknologi >  >> RDS >> Mysql

Gruppér rækker ved hjælp af gruppe efter klausul i MySQL

Denne vejledning er en del af serien Lær grundlæggende SQL-forespørgsler ved hjælp af MySQL. I denne øvelse vil vi diskutere SQL-forespørgsler for at udføre gruppering af tabelrækkerne i MySQL ved hjælp af GROUP BY-sætningen med de samlede funktioner. Du kan også følge Using Aggregate Functions (SUM, AVG, MAX, MIN, COUNT, DISTINCT) i MySQL for at lære de aggregerede funktioner.

Gruppér efter forespørgsel

GRUPPE AF klausul kan bruges til at udføre gruppering af tabelrækkerne. Den kan også bruges sammen med aggregerede funktioner til at generere rapporterne og til at indsamle statistiske data.

# GROUP BY - Syntax
SELECT column_1, column_2, ..., [<aggregate function> AS <column>] FROM `table_name` GROUP BY column_1, column_2, ...;

Forespørgselsforklaring

GRUPPE AF klausul kan bruges til at gruppere rækkerne ved at specificere kolonnerne for at danne rækkerne.

Vi kan bruge aggregerede funktioner til effektivt at bruge GROUP BY-klausulen til at generere rapporterne og til at indsamle statistiske data.

Grupperingen kan anvendes på flere kolonner, hvor den første kolonne vil danne den primære gruppe, og de efterfølgende kolonner vil danne undergrupper.

Eksempler

Dette afsnit giver eksempler på at udføre gruppering ved hjælp af GROUP BY-sætningen med og uden aggregeringsfunktioner. Brug nedenstående forespørgsel til at oprette brugertabellen med id, fornavn, efternavn, alder og aktive kolonner til at gemme brugerdata.

# Create the User Table
CREATE TABLE `enterprise`.`user` (
`user_id` BIGINT NOT NULL,
`first_name` VARCHAR(45) ,
`last_name` VARCHAR(45),
`age` SMALLINT(6) NOT NULL DEFAULT 0,
`active` TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`user_id`));

Nedenstående forespørgsel kan bruges til at indsætte testdata i brugertabellen.

# Insert Rows - All Columns
INSERT INTO `user` ( `user_id`, `first_name`, `last_name`, `age`, `active` ) VALUES
( 1, 'John', 'Smith', 18, 1 ),
( 2, 'Rick', 'Jones', 19, 1 ),
( 3, 'John', 'Ponting', 16, 0 ),
( 4, 'Harsh', 'Upadhyay', 20, 1 ),
( 5, 'Tajwinder', 'Singh', 18, 0 );

Ovennævnte forespørgsel vil indsætte 5 rækker i tabellen med id, fornavn, efternavn og aktive kolonner til at repræsentere 5 forskellige brugere.

Nu vil vi bruge GROUP BY-sætningen uden de samlede funktioner til at gruppere rækkerne. Det kan gøres ved at bruge GROUP BY-klausulen i MySQL som vist nedenfor.

# GROUP BY - Generate the set of active values
SELECT active from user GROUP BY active;

# Result
1
0

# GROUP BY - Generate the set of first name
SELECT first_name from user GROUP BY first_name;

# Result
John
Rick
Harsh
Tajwinder

Ovennævnte forespørgsler returnerede resultatsættet ved at gruppere rækkerne ved hjælp af GROUP BY-sætningen. Nu vil vi gruppere rækkerne med den samlede funktion som vist nedenfor.

# GROUP BY - Get the maximum age of all users with specific first name
SELECT first_name, MAX(age) AS max_age from user GROUP BY first_name;

# Result
John 18
Rick 19
Harsh 20
Tajwinder 18

# GROUP BY - Get the average age of all users with specific first name
SELECT first_name, AVG(age) AS avg_age from user GROUP BY first_name;

# Result
John 17.0000
Rick 19.0000
Harsh 20.0000
Tajwinder 18.0000

Sådan kan vi bruge GROUP BY-sætningen med og uden de samlede funktioner til at gruppere rækkerne i tabellen for de specifikke kolonner.


  1. Brug af en if-betingelse i en indsættelse af SQL Server

  2. JDBC SQLServerException:Denne driver er ikke konfigureret til integreret godkendelse.

  3. ORACLE SQL:Udfyld manglende datoer

  4. Sådan overvåger du MySQL/MariaDB-databaser ved hjælp af Netdata på CentOS 7