Database
 sql >> база данни >  >> RDS >> Database

Как да използвате клауза GROUP BY в SQL

В тази статия за SQL ще научим за клаузата GROUP BY и как да я използваме в SQL. Ще обсъдим също използването на клаузата GROUP BY с клаузата WHERE.

Какво е клаузата GROUP BY?

Клаузата GROUP BY е SQL клауза, използвана в израза SELECT за управление на същите записи на колона в групата с помощта на SQL функции.

Синтаксис на клауза GROUP BY:

SELECT columnname1, columnname2, columnname3 FROM tablename GROUP BY columnname;

Можем да използваме множество колони от таблицата в клаузата GROUP BY.

Има някои стъпки, трябва да се научим как да използваме клаузата GROUP BY в SQL заявката:

1. Създайте нова база данни или използвайте съществуваща база данни, като изберете базата данни с помощта на ключовата дума USE, последвана от името на базата данни.

2. Създайте нова таблица в избраната база данни или можете да използвате вече създадена таблица.

3. Ако таблицата е новосъздадена, вмъкнете записите в новосъздадената база данни с помощта на заявката INSERT и прегледайте вмъкнатите данни с помощта на заявката SELECT без клаузата GROUP BY.

4. Сега сме готови да използваме клаузата GROUP BY в SQL заявките.

Стъпка 1:Създайте нова база данни или използвайте вече създадена база данни.

Вече създадох база данни. Ще използвам съществуващото си създадено име на база данни, Компания.

USE Company;

Компанията е името на базата данни.

Тези, които не са създали база данни, следват следната заявка, за да създадат базата данни:

CREATE DATABASE database_name;

След като създадете базата данни, изберете я с помощта на ключовата дума USE, последвана от името на базата данни.

Стъпка 2:Създайте нова таблица или използвайте вече съществуваща таблица:

Вече създадох таблица. Ще използвам съществуващата таблица с име Employees.

За да създадете новите таблици, следвайте следния синтаксис CREATE TABLE:

CREATE TABLE table_name(

columnname1 datatype(column size),

columnname2 datatype(column size),

columnname3 datatype(column size)

);

Стъпка 3:Вмъкнете записите в новосъздадената таблица с помощта на заявката INSERT и прегледайте записите с помощта на заявката SELECT.

Използвайте следния синтаксис, за да вмъкнете нови записи в таблицата:

INSERT INTO table_name VALUES(value1, value2, value3);

Използвайте следния синтаксис, за да видите записите от таблицата:

SELECT * FROM table_name;

Следната заявка ще покаже записите на служителите:

SELECT * FROM Employees;

Резултатът от горната заявка SELECT е:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
1001 VAIBHAVI МИШРА 65500 ПУНА ORACLE 1
1002 VAIBHAV ШАРМА 60 000 NOIDA C# 5
1003 НИХИЛ VANI 50500 ДЖАЙПУР FMW 2
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ C# 5
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
3002 ANUJA WANRE 50500 ДЖАЙПУР FMW 2
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 РУЧИКА AGARWAL 60 000 ДЕЛХИ ORACLE 1
5001 АРХИТ ШАРМА 55500 ДЕЛХИ ТЕСТВАНЕ 4
5002 SANKET ЧАУХАН 70 000 ХАЙДЕРАБАД JAVA 3
5003 РОШАН NEHTE 48500 ЧАНДИГАР C# 5
6001 РАХУЛ НИКАМ 54500 БАНГАЛОР ТЕСТВАНЕ 4
6002 АТИС JADHAV 60500 БАНГАЛОР C# 5
6003 НИКИТА ИНГАЛЕ 65 000 ХАЙДЕРАБАД ORACLE 1

Стъпка 4:Готови сме да използваме клаузата GROUP BY в заявките

Сега ще се потопим дълбоко в клаузата GROUP BY с помощта на примери

Пример 1: Напишете заявка за показване на групата записи на служители по град.

SELECT * FROM EMPLOYEES GROUP BY CITY;

Горната заявка показва записите на служителите, където служител от същия град ще се счита за една група. Например, ако в таблицата има записи за 10 служители, където 3 са от град Пуна, 3 са от град Мумбай, 2 са от Хайдерабад и Бангалор, тогава горната заявка ще групира служителя в град Пуна, град Мумбай, като един запис и т.н. .

Резултатът от горната заявка:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
6001 РАХУЛ НИКАМ 54500 БАНГАЛОР ТЕСТВАНЕ 4
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
4003 РУЧИКА AGARWAL 60 000 ДЕЛХИ ORACLE 1
5002 SANKET ЧАУХАН 70 000 ХАЙДЕРАБАД JAVA 3
1003 НИХИЛ VANI 50500 ДЖАЙПУР FMW 2
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ C# 5
1002 VAIBHAV ШАРМА 60 000 NOIDA C# 5
1001 VAIBHAVI МИШРА 65500 ПУНА ORACLE 1

Както виждаме, записите на служителите са групирани по градове, а записите се показват във възходящ ред по подразбиране.

Пример 2: Напишете заявка за показване на групата записи на служителите по заплата в низходящ ред.

SELECT * FROM EMPLOYEES GROUP BY SALARY DESC; 

Горната заявка показва записите на служителите, където служителите с една и съща заплата ще се считат за една група, а записите ще се показват в низходящ ред.

Резултатът от горната заявка:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
5002 SANKET ЧАУХАН 70 000 ХАЙДЕРАБАД JAVA 3
1001 VAIBHAVI МИШРА 65500 ПУНА ORACLE 1
6003 НИКИТА ИНГАЛЕ 65 000 ХАЙДЕРАБАД ORACLE 1
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4
1002 VAIBHAV ШАРМА 60 000 NOIDA C# 5
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
1003 НИХИЛ VANI 50500 ДЖАЙПУР FMW 2
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ C# 5
5003 РОШАН NEHTE 48500 ЧАНДИГАР C# 5

Както виждаме, записите на служителите са групирани по заплата и записите се показват в низходящ ред, както споменаваме desc в края.

Пример 3: Напишете заявка за показване на група записи на служителите по заплата и град.

SELECT * FROM EMPLOYEES GROUP BY SALARY, CITY;

Горната заявка показва записите на служителите, където служителите с една и съща заплата и град ще се считат за една група.

Например, да предположим, че таблицата има 10 записа на служители. От 10 служители заплатата на 2 служители и града съвпада с други двама служители и останалите шест служители заплата и град е несравним, тогава 6-те служители ще се считат за 6 отделни групи, а 2 служители, които съвпадат с други 2 служители, ще се считат за една група . Накратко ще бъдат сформирани 8 групи.

Резултатът от горната заявка:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
5003 РОШАН NEHTE 48500 ЧАНДИГАР C# 5
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ C# 5
1003 НИХИЛ VANI 50500 ДЖАЙПУР FMW 2
6001 РАХУЛ НИКАМ 54500 БАНГАЛОР ТЕСТВАНЕ 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
5001 АРХИТ ШАРМА 55500 ДЕЛХИ ТЕСТВАНЕ 4
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4003 РУЧИКА AGARWAL 60 000 ДЕЛХИ ORACLE 1
1002 VAIBHAV ШАРМА 60 000 NOIDA C# 5
6002 АТИС JADHAV 60500 БАНГАЛОР C# 5
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4
6003 НИКИТА ИНГАЛЕ 65 000 ХАЙДЕРАБАД ORACLE 1
1001 VAIBHAVI МИШРА 65500 ПУНА ORACLE 1
5002 SANKET ЧАУХАН 70 000 ХАЙДЕРАБАД JAVA 3

Както виждаме, записите на служителите са групирани по заплата и град, а записите се показват във възходящ ред по подразбиране.

Пример 4: Напишете заявка за показване на записите на служителите по град и отдел.

SELECT * FROM EMPLOYEES GROUP BY CITY, DEPARTMENT;

Горната заявка показва записите на служителите, където служителите са в един и същи град, и отделът ще се счита за една група.

Резултатът от горната заявка:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
6002 АТИС JADHAV 60500 БАНГАЛОР C# 5
6001 РАХУЛ НИКАМ 54500 БАНГАЛОР ТЕСТВАНЕ 4
5003 РОШАН NEHTE 48500 ЧАНДИГАР C# 5
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
4003 РУЧИКА AGARWAL 60 000 ДЕЛХИ ORACLE 1
5001 АРХИТ ШАРМА 55500 ДЕЛХИ ТЕСТВАНЕ 4
5002 SANKET ЧАУХАН 70 000 ХАЙДЕРАБАД JAVA 3
6003 НИКИТА ИНГАЛЕ 65 000 ХАЙДЕРАБАД ORACLE 1
1003 НИХИЛ VANI 50500 ДЖАЙПУР FMW 2
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ C# 5
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4
1002 VAIBHAV ШАРМА 60 000 NOIDA C# 5
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
1001 VAIBHAVI МИШРА 65500 ПУНА ORACLE 1

Както виждаме, записите на служителите са групирани по град и отдел, а записите се показват във възходящ ред по подразбиране.

Пример 5: Напишете заявка за преброяване на списъка на служителите във всеки отдел от таблицата на служителите.

SELECT DEPARTMENT, COUNT(DEPARTMENT) FROM EMPLOYEES GROUP BY DEPARTMENT;

Горната заявка показва броя на служителите във всяка група отдели от отдела. Както шестима служители работят в отдела за човешки ресурси, петима работят в друг отдел.

Резултатът от горната заявка:

ОТДЕЛ БРОЙ(ОТДЕЛ)
C# 4
FMW 3
JAVA 4
ORACLE 4
ТЕСТВАНЕ 3

Както виждаме, четирима служители работят в отдел C#, трима работят в отдел FMW и т.н.

Пример 6: Напишете заявка за преброяване на списъка на служителите от всеки град от таблицата на служителите.

SELECT CITY, COUNT(CITY) FROM EMPLOYEES GROUP BY CITY;

Горната заявка показва броя на служителите във всяка градска група по град. Както трима служители работят от град Пуна, четирима работят от друг град и т.н.

Резултатът от горната заявка:

ГРАД COUNT(CITY)
БАНГАЛОР 2
ЧАНДИГАРХ 2
ДЕЛХИ 2
ХАЙДЕРАБАД 2
ДЖАЙПУР 2
МУМБАЙ 3
NOIDA 2
ПУНА 3

Както виждаме, двама служители работят от град Бангалор, трима работят от град Мумбай и т.н.

Пример 7: Напишете заявка за сумиране на групата заплати на служителите по града.

SELECT CITY, SUM(SALARY) AS SALARY FROM EMPLOYEES GROUP BY CITY;

Горното се използва за сумиране на заплатите на служителите, групирани по името на града. Например, за служители от един и същи град, тяхната заплата ще бъде сумата и се счита за една група. Използвахме функцията за обобщена сума, последвана от колоната за заплата за добавяне на заплата.

Резултатът от горната заявка:

ГРАД ЗАПЛАТА
БАНГАЛОР 115 000
ЧАНДИГАРХ 104 000
ДЕЛХИ 115500
ХАЙДЕРАБАД 135 000
ДЖАЙПУР 101 000
МУМБАЙ 169 000
NOIDA 114500
ПУНА 186500

Както виждаме, сборната заплата в град Бангалор е 115 000, общата заплата в град Чандигарх е 104 000, което е добавянето на различна заплата на служителите, но от града се използва същият подход за всеки град.

Пример 8: Напишете заявка, за да намерите минималната заплата от всеки отдел.

SELECT DEPARTMENT, MIN(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT;

Горната заявка се използва за намиране на минималната заплата на служителя от всеки отдел. Заплатата на един от служителите в отдела Java е 54500, което е най-ниската за целия java отдел. Същите 48500 са най-ниската заплата, изплащана на служителя в C# отдела.

Резултатът от горната заявка:

ОТДЕЛ MIN(ЗАЛАТА)
C# 48500
FMW 50500
JAVA 54500
ORACLE 55500
ТЕСТВАНЕ 54500

Както виждаме, 50500 е най-ниската заплата, изплащана на един от служителите в отдел FMW, 55500 е най-ниската заплата, изплатена на един от служителите в отдела ORACLE.

Пример 9: Напишете заявка, за да намерите минималната заплата за всеки град.

SELECT CITY, MAX(SALARY) FROM EMPLOYEES GROUP BY CITY;

Горната заявка се използва за намиране на максималната заплата от всеки град. Един от служителите от заплатата на град Пуна е 65 500, което е най-високото в целия град Пуна, същите 60 500 е най-високата заплата, изплащана на служителя в град Мумбай.

Резултатът от горната заявка:

ГРАД МАКС.(ЗАЛАТА)
БАНГАЛОР 60500
ЧАНДИГАРХ 55500
ДЕЛХИ 60 000
ХАЙДЕРАБАД 70 000
ДЖАЙПУР 50500
МУМБАЙ 60500
NOIDA 60 000
ПУНА 65500

Както виждаме, 50500 е най-високата заплата, изплащана на един от служителите в град Джайпур, 55500 е най-високата заплата, изплатена на един от служителите в град Чандигарх.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Сравняване на методите за разделяне/конкатенация на низове

  2. Система за управление на големи бази данни:проектиране и архитект

  3. Значението на избора на правилния размер на Azure VM

  4. Разбиране на Pivot оператора в SQL

  5. Как DevOps трябва да използват DBaaS (база данни като услуга), за да оптимизират разработката на своите приложения​