Клаузата SQL GROUP BY се използва за подреждане на идентични данни в групи въз основа на една или повече колони. Обикновено се използва с агрегатни функции като COUNT() SUM() AVG() MAX() и MIN() за извършване на изчисления на всяка група от данни.
Пример: Първо ще го направим създавам демонстрационна SQL база данни и таблица, върху която ще използваме командата GROUP BY.
Запитване:
SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;Изход:
Синтаксис:
бхарти джа
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, за да разберем как групира редове въз основа на колона и агрегира данни.
Пример 1: Групиране по една колона
Когато групираме по една колона, редовете с една и съща стойност в тази колона се комбинират. Например групирането по предмет показва колко ученици са записани по всеки предмет.
Запитване:
SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;Изход:
Обяснение: Всеки предмет се появява два пъти в таблицата, така че броят за английски математика и природни науки е 2.
Пример 2: Групиране по множество колони
Използването на GROUP BY с множество колони групира редове, които споделят едни и същи стойности в тези колони. Например групирането по предмет и година ще комбинира редове с една и съща двойка предмет–година и можем да преброим колко ученици попадат във всяка група.
int към char
Запитване:
SELECT subject year COUNT(*) FROM Student GROUP BY subject year;Изход:
Обяснение: Учениците с еднакъв предмет и година се групират заедно. Тъй като всяка двойка тема-година се среща два пъти, броят е 2 за всяка група.
Клауза HAVING в клауза GROUP BY
Клаузата HAVING се използва за филтриране на резултатите след групиране, особено когато работите с агрегатни функции като SUM() COUNT() или AVG(). За разлика от WHERE, той прилага условия за групирани данни.
Пример 1: Филтриране по обща заплата
В тази заявка групираме служители по име и показваме само онези, чиято обща заплата е по-голяма от 50 000.
SELECT NAME SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>50000; Изход
Обяснение : В резултата се появяват само служители, чиято обща заплата надвишава 50 000.
Пример 2: Филтриране по средна заплата
В тази заявка ние групираме служителите по възраст и показваме само тези възрастови групи, където средната заплата е над 60 000.
SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;Изход:
чирандживи актьор
Обяснение: Тази заявка групира служителите по възраст и изчислява средната заплата за всяка възраст. Показани са само онези възрастови групи, където средната заплата е по-голяма от 60 000.
Създаване на тест