Рекомендуем, 2024

Выбор редакции

Разница между группами By и Order By в SQL

SQL позволяет систематизировать данные, полученные по запросу. У нас есть два предложения для организации данных, полученных из запроса: предложения Group By и Order By. Пункт, который отличает предложения Group By и Order By, заключается в том, что предложение Group By используется, когда мы хотим применить агрегатную функцию к более чем одному набору кортежей, и предложение Order By используется, когда мы хотим отсортировать данные, полученные запросом. Давайте обсудим некоторые различия между предложением Group By и предложением Order By с помощью сравнительной таблицы, показанной ниже.

Сравнительная таблица

Основа для сравненияГруппа поСортировать по
основнойGroup By используется для формирования группы из набора кортежей.Упорядочить по используется для упорядочения данных, полученных в результате запроса, в отсортированной форме.
атрибутАтрибут в функции Aggregate не может быть в предложении Group By.Атрибут в совокупности может быть в порядке по предложению.
земляСделано на основании сходства значений атрибутов.Сделано на основании восходящего и нисходящего порядка.

Определение группы по пункту

Агрегатные функции, такие как avg, min, max, sum, count, применяются к одному набору кортежей. В случае, если вы хотите применить агрегатные функции к группе из набора кортежей, у нас есть предложение Group by для этого. Предложение «Группировать по» группирует кортежи с одинаковым значением атрибута.

Следует помнить одну вещь о предложении Group By: убедитесь, что атрибут в предложении Group By должен присутствовать в предложении SELECT, но не в статистической функции . Если предложение Group By содержит атрибут, который находится не в предложении SELECT, или если он находится в предложении SELECT, но под агрегатной функцией, запрос становится ошибочным. Следовательно, мы можем сказать, что предложение Group By всегда используется в сотрудничестве с предложением SELECT.

Давайте возьмем пример для понимания предложения Group By.

ВЫБЕРИТЕ Отдел _ID, avg (Зарплата) как avg_salary из Учительской группы По Department_ID.

Вы можете видеть, что изначально формируется промежуточный результат, который сгруппировал отделы.

Далее, агрегатная функция avg применяется к каждой группе отделов, и результат показан ниже.

Определение порядка по пунктам

Предложение Order By используется для отображения данных, полученных по запросу, в отсортированном порядке. Как и предложение Group By, предложение Order By также используется в сотрудничестве с предложением SELECT. Если вы не упомянули порядок сортировки, предложение Order By сортирует данные в порядке возрастания. Вы можете указать восходящий порядок как asc и нисходящий порядок как desc .

Давайте разберемся с работой пункта Order By с помощью следующего примера. У нас есть таблица учителя, и я буду применять сортировку к двум столбцам Department_Id и Salary таблицы учителя.

Выберите Department_ID, Заработная плата из заказа учителя по Department_Id asc, Зарплата desc.

Вы можете видеть, что сначала он упорядочивает _ID отдела в порядке возрастания, а затем упорядочивает оклады в том же отделе в порядке убывания.

Ключевые различия между группами By и Order By

  1. Предложение Group By группирует набор кортежей в отношении, которые находятся в предложении SELECT. С другой стороны, предложение Order By сортирует результат запроса в порядке возрастания или убывания.
  2. Атрибут в агрегатной функции не может быть в предложении Group By, тогда как атрибут в агрегатной функции может быть в предложении Order By.
  3. Группировка кортежей выполняется на основе сходства значений атрибутов кортежей. С другой стороны, упорядочение или сортировка выполняется на основе возрастающего или убывающего порядка.

Заключение:

Если вы хотите сформировать группу из набора кортежей, то вы должны использовать предложение Group By. Если вы хотите упорядочить данные одного столбца или нескольких столбцов в наборе кортежей в порядке возрастания или убывания, то следует использовать предложение Order By.

Top