Есть ли способ использовать DISTINCT и COUNT (*) вместе для пуленепробиваемости вашего кода от записей DUPLICATE? - PullRequest
0 голосов
/ 09 июля 2019

Вчера я получил помощь по функции, позволяющей правильно рассчитать количество элементов в столбце на основе нескольких критериев / столбцов.Однако, если есть способ получить количество DISTINCT для всех записей в таблице на основе агрегированного оператора GROUP BY.

    SELECT      TIME = ap.day,
                acms.tenantId,
                acms.CallingService,
                policyList = ltrim(sp.value),
                policyInstanceList = ltrim(dp.value),
                COUNT(*) AS DISTINCTCount
    FROM        dbo.acms_data acms
    CROSS APPLY string_split(acms.policyList, ',') sp
    CROSS APPLY string_split(acms.policyInstanceList, ',') dp
    CROSS APPLY (select day = convert(date, acms.[Time])) ap
    GROUP BY    ap.day, acms.tenantId, sp.value, dp.value, acms.CallingService

Я просто хотел бы знать, будет ли способ увидеть,Есть обходной путь для совместного использования DISTINCT и Count (*), и повлияет ли это на мои результаты, чтобы сделать этот алгоритм потенциально неуязвимым для дублирующихся записей.

Причина, по которой я должен использовать COUNT (*), заключается в том,потому что я агрегирую на основе каждого столбца в таблице, а не только определенного столбца или нескольких.

1 Ответ

2 голосов
/ 09 июля 2019

Мы можем использовать DISTINCT вместе с COUNT, как в этом примере.

USE AdventureWorks2012
GO
-- This query shows 290 JobTitle 
SELECT COUNT(JobTitle) Total_JobTitle 
FROM [HumanResources].[Employee]
GO
-- This query shows only 67 JobTitle 
SELECT COUNT( DISTINCT JobTitle) Total_Distinct_JobTitle
FROM [HumanResources].[Employee]
GO

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...