Разница между PARTITION BY и GROUP BY заключается в следующем:
- Цель. 2 GROUP BY используется для агрегирования данных и получения итоговой строки для каждой группы. 2 PARTITION BY применяется для выполнения расчётов над связанными строками без их сворачивания в итоговые строки. 2
- Количество строк. 2 GROUP BY уменьшает количество строк, группируя их. 2 PARTITION BY сохраняет исходное количество строк, добавляя новые столбцы с агрегированными данными. 2
- Функции агрегирования. 1 GROUP BY позволяет использовать такие функции агрегирования, как SUM, AVG, MIN, MAX и COUNT. 1 PARTITION BY, используемый в оконных функциях, также поддерживает эти функции агрегирования, но дополнительно обеспечивает доступ к функциям ранжирования и временных рядов, таким как ROWNUMBER, RANK, DENSERANK, LAG и LEAD. 1
Таким образом, GROUP BY подходит для обобщения данных и получения итогов для различных групп строк, а PARTITION BY — для более детальных расчётов в конкретных разделах данных. 1