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
).