2015-06-26 4 views
-1

У меня есть столбец, и я хотел бы подсчитать количество уникальных пар элементов в столбце в SQL, например, в Col 1 количество уникальных пар должно быть 6: ([1,2], [1,3], [1,4], [2,3], [2,4], [3,4]). Благодаря!Подсчитайте количество пар в SQL

col 1, 
    1 
    2 
    3 
    4 
+0

Какая СУБД? Что вы пробовали? –

+0

Возможный дубликат [Возврат всех возможных комбинаций значений в пределах одного столбца в SQL] (http://stackoverflow.com/questions/31070337/return-all-possible-combinations-of-values-within-a-single-column -в-SQL) – jarlh

ответ

2

Рассмотрим ситуацию, когда в нас есть значения dulpicates в таблице говорят

col1 
1 
1 
2 
3 
4 
5 

Общее количество уникальных комбинаций 10: ([1,2], [1,3], [1,4], [1,5], [2,3], [2,4 ], [2,5], [3,4] [3,5], [4,5]).

Но данный ниже запрос дает мне счет 14 из-за дублирования 1, который подсчитывает 4 дополнительных пары [1,2], [1,3], [1,4], [1,5] дважды.

select count(*) 
from table t1 join 
table t2 
on t1.col1 < t2.col1; 

Чтобы изменить этот дефект у меня есть следующий запрос, который гарантирует, что дубликаты удаляются, и мы получаем правильное название output.The таблиц я выбрал это COUNTUNIQUE, который может хранить целые значения в нем в столбце с именем col1.

select count(*) from 
(select distinct col1 from countunique) t1 
join (select distinct col1 from countunique) t2 
on t1.col1<t2.col1 

SQL Fiddle для справки SQLFIDDLE

Надежда это отвечает на ваш вопрос.

1

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

select count(*) 
from table t1 join 
    table t2 
    on t1.col1 < t2.col1; 

простой способ заключается в использовании формулы:

select count(*) * (count(*) - 1)/2 
from table t; 
Смежные вопросы