Допустим, у меня есть следующая таблица:
Record_ID | Match_criteria_1 | Match_criteria_2 | Match_criteria_3 | Dollars
1 | A | V | F | 10
2 | A | W | G | 20
3 | B | W | H | 30
4 | B | X | I | 40
5 | C | Y | F | 50
6 | C | Z | J | 60
Если я попытаюсь использовать 'GROUP BY' или 'Over (PARTITION BY)' для Match_criteria_1, Match_criteria_2 и Match_criteria_3, я бы в итогес отдельными 6 группами / разделами.
SELECT *, sum(Dollars) OVER (PARTITION BY Match_criteria_1, Match_criteria_2, Match_Criteria_3) AS Total_Dollars
FROM My_table
Record_ID | Match_criteria_1 | Match_criteria_2 | Match_criteria_3 | Dollars | Total_Dollars
1 | A | V | F | 10 | 10
2 | A | W | G | 20 | 20
3 | B | W | H | 30 | 30
4 | B | X | I | 40 | 40
5 | C | Y | F | 50 | 50
6 | C | Z | J | 60 | 60
Как видите, ни одна из записей не имеет одинаковые Match_criteria_1, Match_criteria_2 и Match_criteria_3.
Но что, если я захочу сгруппировать записи, которые имеюттот же Match_criteria_1, Match_criteria_2 ИЛИ Match_criteria_3?
Итак, используя мой пример, запись 1 соответствует записи 2 из-за Match_criteria_1, запись 2 соответствует записи 3 из-за Match_criteria_2, запись 3 соответствует записи4 из-за Match_criteria_1, запись 5 совпадает с записью 1 из-за Match_Criteria_3, а запись 6 совпадает с записью 5 из-за Match_criteria 1 (так что происходит переходное свойство).Тогда желаемый результат:
Record_ID | Match_criteria_1 | Match_criteria_2 | Match_criteria_3 | Dollars | Total_Dollars
1 | A | V | F | 10 | 210
2 | A | W | G | 20 | 210
3 | B | W | H | 30 | 210
4 | B | X | I | 40 | 210
5 | C | Y | F | 50 | 210
6 | C | Z | J | 60 | 210
, где Total_dollars - это сумма каждой записи из-за того, что все шесть политик совпадают друг с другом из-за транзитивности.Таким образом, записи 1 и 6 могут не иметь общих критериев соответствия, но они по-прежнему сгруппированы, поскольку обе они соответствуют записи 5.