что означает группировка по нескольким столбцам? - PullRequest
0 голосов
/ 31 марта 2019

Я использую оракул 11g, так что я прочитал много статей об этом, но я не понимаю как именно это произошло в базе данных, так скажем, что есть две таблицы:

select * from Employee

result is here

select * from student

result is here

поэтому, когда мы хотим сделать группировку по нескольким столбцам:

SELECT SUBJECT, YEAR, Count(*)
FROM Student
GROUP BY SUBJECT, YEAR;

поэтому мой вопрос: что именно произошло в базе данных? я имею в виду количество запросов (*) сначала в каждом столбце в группе, а затем сортировать его? или что? Кто-нибудь может объяснить это подробно?

1 Ответ

1 голос
/ 31 марта 2019

SQL - это описательный язык, а не процедурный язык.

Что делает запрос, так это определяет все строки в исходных данных, где группа по ключам одинакова. Затем он сводит их к одному ряду.

Например, в ваших данных все они имеют одинаковые данные:

subject   year    name
English    1      Harsh
English    1      Pratik
English    1      Ramesh

Вы говорите group by subject, year, поэтому они становятся:

Subject    Year   Count(*)
English    1      3

Часто такое агрегирование осуществляется с помощью сортировки. Однако это зависит от базы данных - и есть много других алгоритмов. Вы не можете предполагать, что база данных будет сортировать данные. Но, если вам легче думать об этом, вы можете подумать о данных, отсортированных по клавишам group by, чтобы идентифицировать группы. Только одно предупреждение, возвращаемые значения не обязательно находятся в каком-либо конкретном порядке (если ваш запрос не включает order by).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...