Подсчет отношений между двумя столбцами в SQL-сервере - PullRequest
1 голос
/ 08 апреля 2019

Доброе утро, у меня есть два столбца в sql studio, и мне нужно посчитать отношения между элементами одного столбца и другого. Проблема в том, что, кажется, только в одном направлении, и я хочу знать оба. Возможно, будет проще, если я покажу вам простой пример. Я использую SQL-сервер.

Это оригинальная таблица:

Col1    Col2
3       1
3       2
3       2
4       4
4       5
4       6
3       2
2       3
2       3

И если я сделаю следующее (основываясь на count (concat)), это даст следующие результаты.

select Col1, Col2, count(concat(Col1, Col2)) as weight 
 FROM test1
 group by Col1, Col2

Col1    Col2    weight
3       1       1
3       2       3
2       3       2
4       4       1
4       5       1
4       6       1

Но то, что я хотел бы, также подсчитывает отношения между двумя элементами, независимо, если это в одном столбце или другом. Таким образом, число отношений между 3-2 (или 2-3) будет 5. Можно это сделать?

3   2   5

Любое предложение будет приветствоваться! Заранее спасибо!

1 Ответ

2 голосов
/ 08 апреля 2019

Большинство баз данных поддерживают least() и greatest(). Это позволяет вам:

select least(col1, col2) as col1, greatest(col1, col2) as col2,
       count(*) as cnt
from t
group by least(col1, col2), greatest(col1, col2);

Если ваша база данных не поддерживает эти удобные функции, вы можете реализовать подобную логику, используя выражения case.

...