Как я могу получить общее количество повторяющихся строк? - PullRequest
0 голосов
/ 06 июня 2018

Предположим, у меня есть таблица " Сотрудник "

|  id  | Name  |
----------------
|   1  |  AAA  |
----------------
|   1  |  AAA  |
----------------
|   2  |   BBB |
----------------
|   2  |  BBB  |
----------------
|   2  |  BBB  |
----------------

Я хочу сосчитать повторяющиеся строки, чтобы результат составил 5 (всего 2 и 3)

Запрос, который я пробовал: -

select count(id)
from Employee
group by id
having count(id) > 1

, который выдает результат, как и ожидалось: -

  | 2 |
   -----
   | 3 |
   -----

Как мне получить общее значение, я имею в виду 5

1 Ответ

0 голосов
/ 06 июня 2018

Самый простой способ - обернуть его в другой запрос:

SELECT SUM(counts) 
FROM (
select count(id) counts
from Employee
group by id
having count(id) > 1) inner_query

Редактировать:

Более сложный способ - использовать group by, sum window function & distinct в том же операторе, чтобы избежать внутреннего подзапроса.

SELECT DISTINCT SUM(COUNT(id)) OVER () count_duplicates
FROM Employee
GROUP BY id
HAVING COUNT(id) > 1
...