Получить количество значений, которые появляются только один раз в столбце - PullRequest
5 голосов
/ 26 сентября 2011

Во-первых, если это уместно, я использую MySQL, хотя я предполагаю, что решение будет работать для всех продуктов БД.Моя проблема, таким образом:

У меня есть простая таблица с одним столбцом.Нет никаких ограничений на столбец.В этом столбце есть несколько простых данных, например,

a
a
b
c
d
d

Мне нужно получить число / количество значений, которые появляются только один раз.Из приведенного выше примера это будет 2 (так как только b и c встречаются один раз в столбце).

Надеюсь, ясно, что мне нужны не значения DISTINCT, а значения UNIQUE.На самом деле я делал это раньше, создав дополнительную таблицу с ограничением UNIQUE для столбца и просто вставив новую таблицу из старой, соответственно обработав дубликаты.

Я надеялся найти решение, котороене требует временной таблицы и может быть как-то просто выполнено с помощью отличного SELECT.

Ответы [ 5 ]

15 голосов
/ 26 сентября 2011

Предполагается, что ваша таблица называется T, а ваше поле называется F:

SELECT COUNT(F)
FROM (
    SELECT F
    FROM T
    GROUP BY F
    HAVING COUNT(*) = 1
) AS ONLY_ONCE
3 голосов
/ 26 сентября 2011

просто вложи немного ...

select count( cnt ) from
( select count(mycol) cnt from mytab group by mycol )
where cnt = 1
3 голосов
/ 26 сентября 2011
select count(*) from 
(
  select
    col1, count(*)
  from 
    Table
  group by 
    Col1
  Having 
    Count(Col1) = 1
)
3 голосов
/ 26 сентября 2011

Может быть так просто:

Select MyColumn From MyTable Group By MyColumn Where Count(MyColumn) = 1
3 голосов
/ 26 сентября 2011
select field1, count(field1) from my_table group by field1 having count(field1) = 1

select count(*) from (select field1, count(field1) from my_table group by field1 having count(field1) = 1)

первый вернет те, которые являются уникальными, а второй вернет количество уникальных элементов.

...