Количество - SQL Server Management Studio 2017 - PullRequest
0 голосов
/ 10 июля 2019

У меня есть следующий запрос, который приносит 71965 строк (включая дубликаты).

SELECT
(REPLACE([DATE],'-','') + '_' + [Championship] + '_' + [Home_Team] + '_Vs_'+ [Away_Team]) 
FROM
[Soccer_Database].[dbo].[Ext_Match_Details]

С помощью приведенного ниже запроса я пытаюсь Count сколько раз каждое значение появляется (чтобы найти дубликаты).

SELECT
(REPLACE([     DATE],'-','') + '_' + [Championship] + '_' + [Home_Team] + '_Vs_'+ [Away_Team]) ,
COUNT(REPLACE([DATE],'-','') + '_' + [Championship] + '_' + [Home_Team] + '_Vs_'+ [Away_Team]) AS COUNT
FROM
    [Soccer_Database].[dbo].[Ext_Match_Details]
GROUP BY
    (REPLACE([DATE],'-','') + '_' + [Championship] + '_' + [Home_Team] + '_Vs_'+ [Away_Team])

НО я получаю 71958 (количество строк без дубликатов) и во всех строках Count столбец равен 1. Любая помощь?

Ответы [ 2 ]

0 голосов
/ 10 июля 2019
SELECT (REPLACE([DATE],'-','') + '_' + [Championship] + '_' + [Home_Team] + '_Vs_'+ [Away_Team]) as [Value] 
            , count(1) as [Count]
    FROM [Soccer_Database].[dbo].[Ext_Match_Details]
    group by (REPLACE([DATE],'-','') + '_' + [Championship] + '_' + [Home_Team] + '_Vs_'+ [Away_Team])
0 голосов
/ 10 июля 2019

Добавьте в конец:
HAVING COUNT(*) > 1
, чтобы отфильтровать группы, содержащие более одной строки (= дубликаты).
Если вы хотите просмотреть все строки, добавьте вместо них
ORDER BY [COUNT] DESC
, чтобы вывести дубликаты сверху.Это работает, поскольку неверно, что все ваши COUNT равны 1 - разница в числе строк вашего исходного запроса и с GROUP BY, как вы объясните.

...