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

GROUP BY срещу ORDER BY

Клаузата GROUP BY и клаузата ORDER BY в SQL се използват за подреждане на данни, получени чрез SQL заявки. Важната разлика между клаузата GROUP BY и клаузата ORDER BY е, че клаузата GROUP BY се прилага, когато искаме да използваме агрегатна функция в SQL заявка за повече от един набор от редове. Обратно, клаузата ORDER BY се прилага, когато искаме да получим данните, получени от заявката, в сортирания ред. Преди да преминем към сравнителни диаграми, първо ще разберем тези SQL клаузи.

Клауза GROUP BY

Инструкцията GROUP BY в SQL използва заявки за подреждане на данни в стойностите на атрибута. Обикновено използваме клаузата GROUP BY с израза SELECT. Винаги трябва да поставяме клаузата GROUP BY след клаузата WHERE. Освен това, той също се поставя пред клаузата ORDER BY.

Често можем да използваме клаузата GROUP BY с агрегатни функции като SUM, AVG, MIN, MAX и COUNT, за да произведем изход от базата данни. Заявката за клаузата GROUP BY е групирана заявка и връща един ред за всеки групиран обект.

По-долу е синтаксисът за използване на клаузата GROUP BY в SQL заявка

SELECT COLUMNNAME, FUNCTION(COLUMNNAME) FROM TABLENAME WHERE CONDITION GROUP BY COLUMNNAME;

Нека разберем клаузата GROUP BY с помощта на няколко примера. Разгледайте следните таблици заедно с дадените записи.

Таблица:Служители

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID WORKING_HOURS POL
1001 VAIBHAVI МИШРА 65 000 ПУНА ORACLE 1 12 F
1002 VAIBHAV ШАРМА 60 000 NOIDA ORACLE 1 9 М
1003 НИХИЛ VANI 50 000 ДЖАЙПУР FMW 2 10 М
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1 10 F
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2 12 М
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ ТЕСТВАНЕ 4 9 F
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3 9 F
3002 ANUJA КЪДЕ 50500 ДЖАЙПУР FMW 2 9 F
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3 12 М
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4 10 М

Пример 1: Да предположим, че искаме да знаем общата заплата на служителите в конкретен град за горните данни. За да направим това, ще изпълним заявката по-долу, както следва:

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

Тази заявка първоначално формира резултат, който е групирал града. Следва SUM функцията се изпълнява за всяка група градове и накрая ще получим желаните резултати, както е показано по-долу:

Пример 2: Да предположим, че искаме да знаем максималната заплата на служителите в конкретен отдел за горните данни. За да направим това, ще изпълним заявката по-долу, както следва:

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

Тази заявка първоначално формира резултат, който е групирал отдела. След това MAX функция се изпълнява за всяка група от отдела и накрая ще получим желаните резултати, както е показано по-долу:

Клауза ORDER BY

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

По-долу е синтаксисът за използване на клаузата ORDER BY в SQL заявка

SELECT * FROM TABLENAME ORDER BY [ASC | DESC];

Нека разберем клаузата ORDER BY с помощта на няколко примера. Разгледайте следните таблици заедно с дадените записи.

Таблица:Служители

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID WORKING_HOURS POL
1001 VAIBHAVI МИШРА 65 000 ПУНА ORACLE 1 12 F
1002 VAIBHAV ШАРМА 60 000 NOIDA ORACLE 1 9 М
1003 НИХИЛ VANI 50 000 ДЖАЙПУР FMW 2 10 М
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1 10 F
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2 12 М
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ ТЕСТВАНЕ 4 9 F
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3 9 F
3002 ANUJA КЪДЕ 50500 ДЖАЙПУР FMW 2 9 F
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3 12 М
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4 10 М

Пример 1: Да предположим, че искаме да подредим резултата в сортирания ред, възходящ или низходящ, въз основа на първата колона с име. В този случай бихме искали да използваме клаузата ORDER BY, за да получим резултата. За да направим това, ще изпълним заявката по-долу, както следва:

SELECT * FROM EMPLOYEES ORDER BY FIRST_NAME ASC;

Ключова разлика между GROUP BY и ORDER BY

Следните са точките, които правят разлика между клаузите GROUP BY и ORDER BY:

  • Изразът GROUP BY в SQL се използва за групиране на записите въз основа на подобна стойност в конкретна колона. От друга страна, клаузата ORDER BY в SQL се използва за сортиране на резултатите на дисплея във възходящ или низходящ ред.
  • Докато изпълнявате заявка с помощта на клаузата GROUP BY в SQL заявка, е задължително да използвате агрегатната функция. От друга страна, докато използвате клаузата ORDER BY в SQ, не е задължително да използвате агрегатна функция.
  • Клаузата GROUP BY винаги се поставя в SQL заявка след клаузата WHERE, но преди клаузата ORDER BY. От друга страна, клаузата ORDER BY винаги се поставя след клаузата GROUP BY.

Сравнителна диаграма

SR.NO ГРУПИРАНЕ ПО ПОРЪЧАЙТЕ ОТ
1 Клаузата GROUP BY се използва за групиране на редовете с подобни стойности. Клаузата ORDER BY се използва за сортиране на резултата в низходящ или възходящ ред
2 Той контролира представянето на редовете Той контролира представянето на колоните
3 Клаузата GROUP BY винаги се поставя преди клаузата ORDER BY. Клаузата ORDER BY винаги се поставя след клаузата GROUP BY.
4 Задължително е да се използва агрегатна функция Не е задължително да се използва агрегатна функция
5 Атрибутът не може да бъде под агрегатната функция в израза GROUP BY. Атрибутът може да бъде под агрегатната функция в оператора ORDER BY.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Модел на база данни за онлайн проучване. Част 1

  2. SQL SELECT AND оператор

  3. Ръководство за анализ на данни:Време е да превъзхождате с помощта на Excel!

  4. Обяснение на псевдонима на SQL

  5. Eager Index Spool и The Optimizer