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


 

См. еще примеры агрегации данных и группировки, например, если нужно проверить не задублировались ли в результате запроса уникальные записи по нескольким полям.

 



© 2018 | Анна Петросян | pashelp@yandex.ru