У меня есть таблица с двумя интересующими колонками, item_id
и bucket_id
. Есть фиксированное количество значений для bucket_id
, и я в порядке с перечислением их, если мне нужно.Расчет перекрытия между группами
Каждый item_id
может отображаться несколько раз, но каждое событие будет иметь отдельное значение bucket_id
. Например, item_id
из 123
может отображаться дважды в таблице, один раз под bucket_id
от A
, один раз под B
.
Моя цель - определить, сколько перекрытий существует между каждой парой значений bucket_id
и отображать ее как матрицу N-на-N.
Для примера рассмотрим следующий небольшой пример таблицы:
item_id bucket_id
========= ===========
111 A
111 B
111 C
222 B
222 D
333 A
333 C
444 C
Так что для этого набора данных, ведра A
и B
один item_id
в общих, ведра C
и D
нет товаров общего и т.д.
Я бы хотел, чтобы приведенная выше таблица была отформатирована примерно так:
A B C D
===================================
A 2 1 2 0
B 1 2 1 1
C 2 1 3 0
D 0 1 0 1
В приведенной выше таблице пересечение строки и столбца сообщает вам, сколько записей существует в значениях bucket_id
. Например, когда строка A
пересекает столбец C
, у нас есть 2
, так как есть 2 записи, которые существуют как в bucket_id
A, так и C. Поскольку пересечение X и Y совпадает с пересечением Y и X, приведенное выше таблица отражается по диагонали.
Я предполагаю, что запрос включает PIVOT
, но я не могу на всю жизнь понять, как заставить его работать.
Что представляет собой последняя таблица (например, что означает значение 2 для столбца A строки C)? – John
@John - Я добавил немного больше объяснений чуть ниже таблицы. –
Это своего рода показатель. но подключаемый – Ravi