logo

SQL ГРУПИРАНЕ ПО

Клаузата SQL GROUP BY се използва за подреждане на идентични данни в групи въз основа на една или повече колони. Обикновено се използва с агрегатни функции като COUNT() SUM() AVG() MAX() и MIN() за извършване на изчисления на всяка група от данни.

fruits_image' title=

Пример: Първо ще го направим създавам демонстрационна SQL база данни и таблица, върху която ще използваме командата GROUP BY.

служители' loading='lazy' title=

Запитване:



SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;

Изход:

Групиране по заявка' loading='lazy' title=

Синтаксис:

бхарти джа
SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;
  • агрегатна_функция: функция, използвана за агрегиране, напр. SUM() AVG() COUNT().
  • име_на_таблица: име на таблицата, от която се избират данни.
  • състояние: Незадължително условие за филтриране на редове преди групиране (използвано с WHERE).
  • колона1 колона2: Колони, върху които се прилага групирането.

Примери за GROUP BY

Да приемем, че имаме таблица Student. Ще вмъкнем някои примерни данни в тази таблица и след това ще извършим операции с помощта на GROUP BY, за да разберем как групира редове въз основа на колона и агрегира данни.

група' loading='lazy' title=

Пример 1: Групиране по една колона

Когато групираме по една колона, редовете с една и съща стойност в тази колона се комбинират. Например групирането по предмет показва колко ученици са записани по всеки предмет.

Запитване:

SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;

Изход:

група-1' loading='lazy' title=

Обяснение: Всеки предмет се появява два пъти в таблицата, така че броят за английски математика и природни науки е 2.

Пример 2: Групиране по множество колони

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

int към char

Запитване:

SELECT subject year COUNT(*) FROM Student GROUP BY subject year;

Изход:

ученици-гр' loading='lazy' title=

Обяснение: Учениците с еднакъв предмет и година се групират заедно. Тъй като всяка двойка тема-година се среща два пъти, броят е 2 за всяка група.

Клауза HAVING в клауза GROUP BY

Клаузата HAVING се използва за филтриране на резултатите след групиране, особено когато работите с агрегатни функции като SUM() COUNT() или AVG(). За разлика от WHERE, той прилага условия за групирани данни.

имп' loading='lazy' title=

Пример 1: Филтриране по обща заплата

В тази заявка групираме служители по име и показваме само онези, чиято обща заплата е по-голяма от 50 000.

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

Изход

възраст-1' loading='lazy' title=

Обяснение : В резултата се появяват само служители, чиято обща заплата надвишава 50 000.

Пример 2: Филтриране по средна заплата

В тази заявка ние групираме служителите по възраст и показваме само тези възрастови групи, където средната заплата е над 60 000.

SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;

Изход:

чирандживи актьор
изход-1' loading='lazy' title=

Обяснение: Тази заявка групира служителите по възраст и изчислява средната заплата за всяка възраст. Показани са само онези възрастови групи, където средната заплата е по-голяма от 60 000.

Създаване на тест