Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Grupuj wiersze za pomocą grupowania według klauzuli w MySQL

Ten samouczek jest częścią serii Naucz się podstawowych zapytań SQL przy użyciu MySQL. W tym samouczku omówimy zapytania SQL służące do grupowania wierszy tabeli w MySQL za pomocą klauzuli GROUP BY z funkcjami agregującymi. Możesz również śledzić Korzystanie z funkcji agregujących (SUM, AVG, MAX, MIN, COUNT, DISTINCT) w MySQL, aby poznać funkcje agregujące.

Grupuj według zapytania

GRUPA WG Klauzula może służyć do grupowania wierszy tabeli. Może być również używany z funkcjami agregacji do generowania raportów i zbierania danych statystycznych.

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

Objaśnienie zapytania

GRUPA WG Klauzula może być użyta do grupowania wierszy poprzez określenie kolumn tworzących zestaw wierszy.

Możemy użyć funkcji agregujących, aby skutecznie wykorzystać klauzulę GROUP BY do generowania raportów i zbierania danych statystycznych.

Grupowanie można zastosować w wielu kolumnach, gdzie pierwsza kolumna będzie stanowić grupę podstawową, a kolejne kolumny utworzą podgrupy.

Przykłady

Ta sekcja zawiera przykłady wykonywania grupowania przy użyciu klauzuli GROUP BY z funkcjami agregacji i bez nich. Użyj poniższego zapytania, aby utworzyć tabelę użytkowników zawierającą identyfikator, imię, nazwisko, wiek i aktywne kolumny do przechowywania danych użytkownika.

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

Poniższe zapytanie może zostać użyte do wstawienia danych testowych do tabeli użytkowników.

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

Wspomniane powyżej zapytanie wstawi do tabeli 5 wierszy z identyfikatorem, imieniem, nazwiskiem i aktywnymi kolumnami reprezentującymi 5 różnych użytkowników.

Teraz do grupowania wierszy użyjemy klauzuli GROUP BY bez funkcji agregujących. Można to zrobić za pomocą klauzuli GROUP BY w MySQL, jak pokazano poniżej.

# 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

Wyżej wymienione zapytania zwróciły zestaw wyników poprzez grupowanie wierszy za pomocą klauzuli GROUP BY. Teraz zgrupujemy wiersze za pomocą funkcji agregującej, jak pokazano poniżej.

# 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

W ten sposób możemy użyć klauzuli GROUP BY z funkcjami agregacji i bez nich, aby pogrupować wiersze tabeli dla określonych kolumn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie Jquery Ajax do pobierania danych z Mysql

  2. Przestarzałe:mysql_connect()

  3. Jak dodać domyślne ograniczenie w MySQL?

  4. Czy moje połączenia z serwerem MySQL są szyfrowane i bezpieczne?

  5. Alternatywa dla słowa kluczowego LIMIT w podzapytaniu w MYSQL