Яка різниця між окремими та груповими?

DISTINCT підходить для отримання унікальних значень з одного або кількох стовпців, тоді як GROUP BY використовується для групування даних на основі одного або кількох стовпців разом із обчисленнями агрегатних функцій. Розуміння того, коли використовувати кожен, має вирішальне значення для створення ефективних і ефективних запитів SQL. 27 лютого 2024 р.

Різниці немає (принаймні в SQL Server). Обидва запити використовують однаковий план виконання. Використовуйте DISTINCT, якщо ви просто хочете видалити дублікати. Використовуйте GROUPY BY, якщо ви хочете застосувати агрегатні оператори (MAX, SUM, GROUP_CONCAT, … або речення HAVING).

SELECT COUNT(*) FROM таблиці GROUP BY стовпець повертає кількість рядків для кожного значення стовпця, згрупованого за, а не кількість груп. Таблиця SELECT COUNT(DISTINCT column) FROM повертає кількість груп (хоча ви також можете отримати це, використовуючи кількість рядків із запиту GROUP BY).

По суті, DISTINCT збирає всі рядки, включаючи будь-які вирази, які потрібно оцінити, а потім викидає дублікати. GROUP BY може (знову ж таки, у деяких випадках) відфільтрувати повторювані рядки перед виконанням будь-якої з цієї роботи.

У більшості випадків DISTINCT використовується для окремих стовпців. Для таких випадків можна легко використовувати DISTINCT. Але це трохи важко використовувати в складних запитах. GROUP BY: підходить для деяких складних запитів, таких як отримання деяких значень за допомогою агрегатних функцій.

загалом, ГРУПУВАТИ ЗА вважається швидшим за DISTINCT у SQL Server, особливо для великих наборів даних.