T-SQL | Агрегирующие функции |
Sum, Count, Average, Min, Max
Для группировки данных под итоги агрегатов применяется оператор GROUP BY или OVER (PARTITION BY).
Например, есть запрос со множеством связей:
SELECT t1.ID, t1.Name AS Name1, t2.Name AS Name2, t3.Name AS Name3, ... FROM table1 t1 INNER JOIN table2 t2 ON t1.ID = t2.ID INNER JOIN tanle3 t3 ON t2.ID = t3.ID INNER JOIN ...
Хотим проверить не задублировались ли в результате запроса уникальные записи по полю t1.ID
Используем аггрегирующую функцию COUNT и надстраиваем проверочный запрос:
SELECT q_check.ID, COUNT(q_check.ID) FROM ( SELECT t1.ID, t1.Name AS Name1, t2.Name AS Name2, t3.Name AS Name3, ... FROM table1 t1 INNER JOIN table2 t2 ON t1.ID = t2.ID INNER JOIN tanle3 t3 ON t2.ID = t3.ID INNER JOIN ... ) q_check GROUP BY q_check.ID HAVING COUNT(q_check.ID) > 1
См. еще примеры агрегации данных и группировки, например, если нужно проверить не задублировались ли в результате запроса уникальные записи по нескольким полям.
|