logo

SQL | ГРУПУВАТИ ЗА

Інструкція GROUP BY в SQL використовується для впорядкування ідентичних даних у групи за допомогою деяких функцій. тобто, якщо окремий стовпець має однакові значення в різних рядках, він упорядкує ці рядки в групу.

особливості

  • Речення GROUP BY використовується з оператором SELECT.
  • У запиті пропозиція GROUP BY розміщується після ДЕ пункт.
  • У запиті пропозиція GROUP BY розміщується перед ЗАМОВИТИ Речення BY, якщо воно використовується.
  • У запиті пропозиція Group BY розміщується перед пропозицією Having.
  • Помістіть умову в речення, що має.

Синтаксис :



SELECT column1, function_name(column2)

FROM ім'я_таблиці

умова ДЕ



ГРУПУВАТИ ЗА стовпцем1, стовпцем2

ORDER BY column1, column2;

Пояснення:



  1. ім'я_функції : назва використовуваної функції, наприклад SUM(), AVG().
  2. ім'я_таблиці : Назва таблиці.
  3. хвороба : стан б/в.

Припустімо, що у нас є дві таблиці Employee and Student Sample Table. Після додавання двох таблиць ми виконаємо певні операції, щоб дізнатися про GROUP BY.

Таблиця співробітників:

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

Вставте деякі випадкові дані в таблицю, а потім ми виконаємо деякі операції в GROUP BY.

Запит:

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

Вихід:

Студентський стіл:

Запит:

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

Вихід:

Групувати за одним стовпцем

Групування Під окремим стовпцем означає розміщення всіх рядків з однаковими значеннями лише цього конкретного стовпця в одній групі. Розглянемо запит, як показано нижче:

Запит:

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

Наведений вище запит дасть наведені нижче результати:

Як ви можете бачити в наведених вище виводах, рядки з повторюваними НАЗВАМИ згруповано під одним і тим же ІМЕНОМ, а відповідна їм ЗАРПЛАТА є сумою ЗАРПЛАТИ повторюваних рядків. Тут для обчислення суми використовується функція SUM() SQL.

Групувати за кількома стовпцями

Групування за кількома стовпцями, наприклад, ГРУПУВАТИ ЗА стовпцем1, стовпцем2 . Це означає розміщення всіх рядків з однаковими значеннями стовпців колонка 1 і колонка 2 в одній групі. Розглянемо наведений нижче запит:

Запит:

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

Вихід:

основна мова java

Вихід : Як ви бачите у вихідних даних вище, учні з однаковим ПРЕДМЕТОМ і РІКОМ розміщені в одній групі. А ті, у яких єдина ТЕМА одна і та сама, але не РІК, належать до різних груп. Отже, тут ми згрупували таблицю відповідно до двох стовпців або кількох стовпців.

Речення HAVING у реченні GROUP BY

Ми знаємо, що речення WHERE використовується для розміщення умов у стовпцях, але що, якщо ми хочемо розмістити умови в групах? Ось де використовується речення HAVING. Ми можемо використовувати пропозицію HAVING, щоб поставити умови, щоб вирішити, яка група буде частиною кінцевого набору результатів. Крім того, ми не можемо використовувати агрегатні функції, такі як SUM(), COUNT() тощо з пропозицією WHERE. Тож ми маємо використовувати речення HAVING, якщо хочемо використовувати будь-яку з цих функцій в умовах.

Синтаксис :

SELECT column1, function_name(column2)

FROM ім'я_таблиці

умова ДЕ

ГРУПУВАТИ ЗА стовпцем1, стовпцем2

МАЮЧИЙ стан

ORDER BY column1, column2;

Пояснення:

  1. ім'я_функції : назва використовуваної функції, наприклад SUM(), AVG().
  2. ім'я_таблиці : Назва таблиці.
  3. хвороба : стан б/в.

приклад :

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

Вихід :

Як ви можете бачити в наведених вище вихідних даних, лише одна група з трьох груп відображається в наборі результатів, оскільки це єдина група, де сума SALARY перевищує 3000. Тому ми використали тут речення HAVING, щоб розмістити цю умову як умову необхідно розмістити в групах, а не в стовпцях.